1386 lines
40 KiB
C++
1386 lines
40 KiB
C++
#ifndef _ZJD_PUBLIC_DATA_H_
|
|
#define _ZJD_PUBLIC_DATA_H_
|
|
|
|
const char VERSION_NO[] = "1.3.0001";
|
|
|
|
#include "zjdtypes.h"
|
|
#include "config.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <ctype.h>
|
|
#include <time.h>
|
|
#include <assert.h>
|
|
#include <stdarg.h>
|
|
#include <sys/timeb.h>
|
|
#include <cstring>
|
|
#include <errno.h>
|
|
#include <error.h>
|
|
#include <unistd.h>
|
|
#include <fcntl.h>
|
|
#include <termios.h>
|
|
#include <pthread.h>
|
|
#include <sys/time.h>
|
|
#include <sys/times.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/select.h>
|
|
#include <linux/rtc.h>
|
|
#include <netinet/in.h>
|
|
#include <arpa/inet.h>
|
|
#include <linux/kd.h>
|
|
#include <net/if.h>
|
|
#include <netdb.h>
|
|
#include <sys/syscall.h>
|
|
typedef int optval_t;
|
|
typedef int SOCKET;
|
|
#include <string>
|
|
#include <vector>
|
|
#include <sys/stat.h>
|
|
#include "zlog/zlog.h"
|
|
#include <nopoll.h>
|
|
#include <nopoll_decl.h>
|
|
|
|
#define MEMERY_1M 65536 //设置位64K
|
|
#define DELAY_RUN 5000
|
|
#define DELAY_TIMER 50 //ms
|
|
#define TIME_BASE (1000 / DELAY_TIMER)
|
|
#define TIME_TICKS (DELAY_TIMER * 1000)
|
|
#define MAX_PATH 260
|
|
|
|
#if !defined(UNUSED)
|
|
#define UNUSED(A) (void)(A)
|
|
#endif
|
|
|
|
#ifndef SOCKET_ERROR
|
|
#define SOCKET_ERROR -1
|
|
#endif
|
|
#ifndef INVALID_SOCKET
|
|
#define INVALID_SOCKET -1
|
|
#endif
|
|
|
|
#define MAX_UNIT_ADDR_SIZE 256 /*最大单元地址长度*/
|
|
#define MAX_UNIT_POINT_PARAM_SIZE 64 /*最大测点参数长度*/
|
|
#define MAX_UNIT_PARAM_SIZE 256 /*最大单元参数长度*/
|
|
#define MAX_PROC_OPTION_SIZE 2048 /*最大协议参数长度*/
|
|
#define MAX_NAME_SIZE 64
|
|
#define MAX_MODEL_SIZE 64
|
|
#define MAX_PSW_SIZE 64
|
|
#define MAX_ID_LENGTH 64
|
|
|
|
#define MAX_PORT_BUFFER_SIZE 2048
|
|
#define MAX_NET_BUFFER_SIZE 4096
|
|
#define MAX_DISPLAY_BUFFER_SIZE 0x8000
|
|
|
|
#define HARDWARE_PORTS_NUM 20
|
|
#define PROCESSES_NUM 64
|
|
#define PROCESS_UNIT_NUM 256
|
|
#define UNIT_NUM 256
|
|
#define UNIT_YX_MAX 0x1500
|
|
#define UNIT_YC_MAX 0x2000
|
|
#define UNIT_YM_MAX 0xB00
|
|
#define UNIT_YK_MAX 0x100
|
|
#define UNIT_YT_MAX 0x100
|
|
#define DATABASE_YX_NUM 0x10000
|
|
#define DATABASE_YC_NUM 0x20000
|
|
#define DATABASE_YM_NUM 0x1000
|
|
#define DATABASE_YK_NUM 0x1000
|
|
#define DATABASE_YT_NUM 0x1000
|
|
#define DATABASE_YXBW_NUM 0xF0000
|
|
#define DATABASE_SOE_NUM 0xF0000
|
|
#define DATABASE_YCBW_NUM (0xF0000 << 1)
|
|
#define DATABASE_YK_LOG_NUM 1024
|
|
#define DATABASE_YT_LOG_NUM 1024
|
|
#define DATABASE_CTRL_LOG_NUM 1024
|
|
#define DATABASE_LIMIT_NUM 1024
|
|
#define PROCESS_WATCHDOG_TIME 90
|
|
#define UNIT_WATCHDOG_TIME 180
|
|
|
|
#define PROCESS_MODE_MASTER 0
|
|
#define PROCESS_MODE_SLAVE 1
|
|
#define PROCESS_MODE_DUPLEX 2
|
|
|
|
#if !defined(PARITY_NONE)
|
|
#define PARITY_NONE 0
|
|
#endif
|
|
|
|
#if !defined(PARITY_ODD)
|
|
#define PARITY_ODD 1
|
|
#endif
|
|
|
|
#if !defined(PARITY_EVEN)
|
|
#define PARITY_EVEN 2
|
|
#endif
|
|
|
|
#if !defined(PARITY_MARK)
|
|
#define PARITY_MARK 3
|
|
#endif
|
|
|
|
#if !defined(PARITY_SPACE)
|
|
#define PARITY_SPACE 4
|
|
#endif
|
|
|
|
#define DPI_ON 0x02
|
|
#define DPI_OFF 0x01
|
|
|
|
#define SPI_ON 0x01
|
|
#define SPI_OFF 0x00
|
|
|
|
#define US_NOUSE 0x00
|
|
#define US_OFFLINE 0x10
|
|
#define US_ONLINE 0x20
|
|
#define US_SLEEP 0x40
|
|
|
|
#define SLAVER_UNIT 0x00
|
|
#define MASTER_UNIT 0x01
|
|
|
|
#define VALID_VALUE 0
|
|
#define INVALID_VALUE 1
|
|
|
|
#define FILE_SYSTEM_CONFIG "system.zjd"
|
|
#define FILE_HARDWARE_CONFIG "hardware.zjd"
|
|
#define FILE_PROCESS_CONFIG "process.zjd"
|
|
#define FILE_UNIT_CONFIG "units.zjd"
|
|
#define FILE_NODE_CONFIG "node.zjd"
|
|
#define FILE_UNIT_YX_CONFIG "%s/uyx%03d.zjd"
|
|
#define FILE_UNIT_YC_CONFIG "%s/uyc%03d.zjd"
|
|
#define FILE_UNIT_YM_CONFIG "%s/uym%03d.zjd"
|
|
#define FILE_UNIT_YK_CONFIG "%s/uyk%03d.zjd"
|
|
#define FILE_UNIT_YT_CONFIG "%s/uyt%03d.zjd"
|
|
#define FILE_DATABASE_CONFIG "database.zjd"
|
|
#define FILE_CALC_YX_CONFIG "calcyx.zjd"
|
|
#define FILE_CALC_YC_CONFIG "calcyc.zjd"
|
|
#define FILE_FORMULA_CONFIG "formula.zjd"
|
|
#define FILE_UNIT_STATIC "units.sta"
|
|
#define FILE_UNIT_YX_STATIC "%s/uyx%03d.sta"
|
|
#define FILE_UNIT_YC_STATIC "%s/uyc%03d.sta"
|
|
#define FILE_UNIT_YM_STATIC "%s/uym%03d.sta"
|
|
#define FILE_UNIT_YK_STATIC "%s/uyk%03d.sta"
|
|
#define FILE_UNIT_YT_STATIC "%s/uyt%03d.sta"
|
|
#define FILE_DATABASE_YX_STATIC "dbyx.sta"
|
|
#define FILE_DATABASE_YC_STATIC "dbyc.sta"
|
|
#define FILE_DATABASE_YM_STATIC "dbym.sta"
|
|
#define FILE_DATABASE_YK_STATIC "dbyk.sta"
|
|
#define FILE_DATABASE_YT_STATIC "dbyt.sta"
|
|
#define FILE_YXBW_LOG "yxbw%02d_%02d.log"
|
|
#define FILE_SOE_LOG "soe%02d_%02d.log"
|
|
#define FILE_YCBW_LOG "ycbw%02d_%02d.log"
|
|
#define FILE_YK_LOG "yk%02d_%02d.log"
|
|
#define FILE_YT_LOG "yk%02d_%02d.log"
|
|
#define FILE_RUN_LOG "run%02d.log"
|
|
#define FILE_SYS_RUNLOG "SysRun.Log"
|
|
#define FILE_PASSWORD_DATA "zjd3100.pwd"
|
|
|
|
|
|
//通讯协议定义
|
|
#define PROTOCOL_NONE 0 //未使用
|
|
#define PROTOCOL_HOST_UNBALANCED_IEC101 1 //不平衡方式IEC101主
|
|
#define PROTOCOL_HOST_BALANCED_IEC101 2 //平衡方式IEC101主
|
|
#define PROTOCOL_SUB_UNBALANCED_IEC101 3 //不平衡方式IEC101从
|
|
#define PROTOCOL_SUB_BALANCED_IEC101 4 //平衡方式IEC101从
|
|
#define PROTOCOL_HOST_IEC104 8 //IEC104主
|
|
#define PROTOCOL_SUB_IEC104 9 //IEC104从
|
|
#define PROTOCOL_HOST_CDT 10 //CDT主
|
|
#define PROTOCOL_SUB_CDT 11 //CDT从
|
|
#define PROTOCOL_HOST_MODBUS_RTU 12 //MODBUS RTU主
|
|
#define PROTOCOL_SUB_MODBUS_RTU 13 //MODBUS RTU从
|
|
#define PROTOCOL_HOST_MODBUS_ASCII 14 //MODBUS ASCII主
|
|
#define PROTOCOL_HOST_MODBUS_TCP 16 //MODBUS tcp主
|
|
#define PROTOCOL_SUB_MODBUS_TCP 17 //MODBUS RTU over tcp从
|
|
#define PROTOCOL_HOST_MODBUS_RTU_TCP 18 //MODBUS RTU over tcp主
|
|
#define PROTOCOL_RTU_STATE 21 //主控状态
|
|
#define PROTOCOL_LOCAL_DEBUG 22 //本地调试
|
|
#define PROTOCOL_BF_FTP 25 //倍福FTP数据协议
|
|
#define PROTOCOL_HOST_DLT645V2007 32 //dlt645v2007协议
|
|
#define PROTOCOL_CALC 37 //计算
|
|
#define PROTOCOL_SUB_GDW104 47 //国网104从
|
|
#define PROTOCOL_HW_MQTT 72 //华为物联平台ROMA
|
|
#define PROTOCOL_OPCUA 78 //opcua协议
|
|
|
|
|
|
#define ADDR_TYPE_NORMAL 0
|
|
#define ADDR_TYPE_HEX 1
|
|
#define ADDR_TYPE_IPV4 2
|
|
#define ADDR_TYPE_IPV4_FACNO 3
|
|
|
|
|
|
#define YKS_IDLE 0
|
|
#define YKS_SELREQ 1
|
|
#define YKS_SELING 2
|
|
#define YKS_SELED 3
|
|
#define YKS_ABRREQ 4
|
|
#define YKS_EXEREQ 5
|
|
#define YKS_EXEING 6
|
|
#define YKS_EXEED 7
|
|
#define YKS_ABRED 8
|
|
|
|
#define YKR_IDLE 0
|
|
#define YKR_SUCC 1
|
|
#define YKR_FAIL 2
|
|
#define YKR_OVER 3
|
|
#define YKR_OPER 4
|
|
|
|
#define YXBWT_AUTO 0
|
|
#define YXBWT_DEV 1
|
|
|
|
#define YCBWT_AUTO 0
|
|
|
|
#define YKT_NULL 0
|
|
#define YKT_SELREQ 1
|
|
#define YKT_SELOUT 2
|
|
#define YKT_SELRET 3
|
|
#define YKT_ABRREQ 4
|
|
#define YKT_EXEREQ 5
|
|
#define YKT_EXEOUT 6
|
|
#define YKT_EXERET 7
|
|
|
|
#define YKS_AUTO 0
|
|
#define YKS_MANU 1
|
|
#define YKS_PROC 2
|
|
|
|
////////////////////////////////
|
|
#define YTS_IDLE 0
|
|
#define YTS_SELREQ 1
|
|
#define YTS_SELING 2
|
|
#define YTS_SELED 3
|
|
#define YTS_ABRREQ 4
|
|
#define YTS_EXEREQ 5
|
|
#define YTS_EXEING 6
|
|
#define YTS_EXEED 7
|
|
#define YTS_ABRED 8
|
|
|
|
#define YTR_IDLE 0
|
|
#define YTR_SUCC 1
|
|
#define YTR_FAIL 2
|
|
#define YTR_OVER 3
|
|
#define YTR_OPER 4
|
|
|
|
#define YTT_NULL 0
|
|
#define YTT_SELREQ 1
|
|
#define YTT_SELOUT 2
|
|
#define YTT_SELRET 3
|
|
#define YTT_ABRREQ 4
|
|
#define YTT_EXEREQ 5
|
|
#define YTT_EXEOUT 6
|
|
|
|
#define YTS_AUTO 0
|
|
#define YTS_MANU 1
|
|
#define YTS_PROC 2
|
|
////////////////////////////////
|
|
|
|
//数据库存储
|
|
#define DATA_TYPE_YX 0x0001
|
|
#define DATA_TYPE_YC 0x0002
|
|
#define DATA_TYPE_YM 0x0004
|
|
|
|
#define FREZ_TYPE_HOUR 0x1000
|
|
#define FREZ_TYPE_DAY 0x2000
|
|
#define FREZ_TYPE_MON 0x4000
|
|
|
|
#if !defined(wMax)
|
|
#define wMax(a,b) (((a) > (b)) ? (a) : (b))
|
|
#endif
|
|
|
|
#if !defined(wMin)
|
|
#define wMin(a,b) (((a) < (b)) ? (a) : (b))
|
|
#endif
|
|
|
|
#if !defined(MAKEWORD)
|
|
#define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))
|
|
#endif
|
|
|
|
#if !defined(MAKEDWORD)
|
|
#define MAKEDWORD(low,high) ((DWORD)(((WORD)(low)) | ((DWORD)((WORD)(high))) << 16))
|
|
#endif
|
|
|
|
#if !defined(LOWORD)
|
|
#define LOWORD(l) ((WORD)(l))
|
|
#endif
|
|
|
|
#if !defined(HIWORD)
|
|
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xffff))
|
|
#endif
|
|
|
|
#if !defined(LOBYTE)
|
|
#define LOBYTE(w) ((BYTE)(w))
|
|
#endif
|
|
|
|
#if !defined(HIBYTE)
|
|
#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xff))
|
|
#endif
|
|
|
|
#define MAX_SYMBOL_SUM 100
|
|
#define MAX_SYMBOL_LEN 10
|
|
#define MAX_KEYWORD_SUM 20
|
|
#define MAX_STACK_LEN 400
|
|
#define MAX_PAIRCLASS_SUM 5
|
|
|
|
#define COMPUTE_SYMBOL 1
|
|
#define ASSIGN_SYMBOL 2
|
|
#define RELATION_SYMBOL 3
|
|
#define LOGICAL_SYMBOL 4
|
|
#define DIVIDE_SYMBOL 5
|
|
#define CONST_SYMBOL 6
|
|
#define VAR_SYMBOL 7
|
|
#define CONDITION_SYMBOL 8
|
|
#define SPECIAL_SYMBOL 9
|
|
|
|
#define DATAS 0
|
|
#define TWOCOMPS 1
|
|
#define ONECOMPS 2
|
|
#define LEFTBRACKET 3
|
|
#define RIGHTBRACKET 4
|
|
|
|
#define SE_TWOCOMPS 0
|
|
#define SE_ONECOMPS 1
|
|
#define SE_SPECIALCONST 2
|
|
#define SE_VARS 3
|
|
#define SE_TEMPVARS 4
|
|
#define SE_CONSTS 5
|
|
#define SE_ASSIGN 6
|
|
|
|
#define MAX_EXP_COUNT 20
|
|
#define MAX_VAR_SUM 24
|
|
#define MAX_CONST_SUM 14
|
|
#define MAX_TEMP_SUM 50
|
|
#define MAX_IF_LEN 50
|
|
#define MAX_THEN_LEN 50
|
|
#define MAX_ELSE_LEN 50
|
|
|
|
#define MAX_DATATYPE_SUM (MAX_VAR_SUM + MAX_CONST_SUM + MAX_TEMP_SUM)
|
|
#define MAX_VAR_LEN (MAX_VAR_SUM * 8)
|
|
#define MAX_CONST_LEN (MAX_CONST_SUM * 8)
|
|
#define MAX_TOKEN_LEN 20
|
|
#define MAX_COMPUTE_DATA_SUM 10
|
|
#define MAX_DATA_STACK_LEN 100
|
|
|
|
#define DT_CHAR 1 // c
|
|
#define DT_SHORTINT 2 // s
|
|
#define DT_INT 3 // i
|
|
#define DT_FLOAT 4 // f
|
|
|
|
#define ADD 1 // +
|
|
#define SUB 2 // -
|
|
#define MUL 3 // *
|
|
#define DIV 4 // /
|
|
#define MOD 5 // %
|
|
#define ABS 6 // ABS
|
|
#define SIN 7 // SIN
|
|
#define COS 8 // COS
|
|
#define LSC 9 // <
|
|
#define LEC 10 // <=
|
|
#define EQC 11 // ==
|
|
#define GEC 12 // >=
|
|
#define GTC 13 // >
|
|
#define AND 14 // &&
|
|
#define OR 15 // ||
|
|
#define LBRACKET 16 // (
|
|
#define RBRACKET 17 // )
|
|
#define CP_TRUE 18 // T
|
|
#define CP_FAUSE 19 // F
|
|
#define TIMEC 20 // TIME
|
|
#define LMBRACKET 21 // [
|
|
#define RMBRACKET 22 // ]
|
|
#define SQRT 23 // SQRT
|
|
#define LLBRACKET 30 // {
|
|
#define RLBRACKET 31 // }
|
|
#define SEMICOLON 32 // ;
|
|
#define ASSIGN 33 // =
|
|
#define IF 34 // IF
|
|
#define THEN 35 // THEN
|
|
#define ELSE 36 // ELSE
|
|
#define EOS 40 // #
|
|
#define CP_MAX 41 // MAX
|
|
#define CP_MIN 42 // MIN
|
|
#define PERIOD 43 // ,
|
|
#define VAR_MIN 51 //* [ dataid]
|
|
#define VAR_MAX 150
|
|
|
|
#define TEMP_VAR_MIN 151 // t00 ~ t49
|
|
#define TEMP_VAR_MAX 200
|
|
#define CONST_MIN 201
|
|
#define CONST_MAX 250
|
|
|
|
#define MAX_SOURCE_FORMULA_LEN 1024
|
|
#define MAX_TARGET_FORMULA_LEN 1024
|
|
#define FORMULA_STRING_LENGTH 200
|
|
|
|
|
|
#define WORKER_ID_BITS 5
|
|
#define DATA_CENTER_ID_BITS 5
|
|
#define SEQUENCE_BITS 12
|
|
#define MAX_WORKER_ID ((1 << WORKER_ID_BITS) - 1)
|
|
#define MAX_DATA_CENTER_ID ((1 << DATA_CENTER_ID_BITS) - 1)
|
|
#define SEQUENCE_MASK ((1 << SEQUENCE_BITS) - 1)
|
|
#define EPOCH 1640995200000 // 2022-01-01 00:00:00
|
|
|
|
typedef struct {
|
|
uint64_t worker_id;
|
|
uint64_t data_center_id;
|
|
uint64_t sequence;
|
|
uint64_t last_timestamp;
|
|
} Snowflake;
|
|
|
|
#pragma pack(1)
|
|
|
|
//for formulas
|
|
typedef struct DATAID
|
|
{
|
|
short iotype;
|
|
short uid;
|
|
short point;
|
|
} DATAID, *PDATAID;
|
|
|
|
struct FORMULA_STRUCT
|
|
{
|
|
short m_form_no;
|
|
BYTE m_slice;
|
|
DATAID m_result_no;
|
|
char m_form_str[FORMULA_STRING_LENGTH];
|
|
BYTE m_var_list[200];
|
|
BYTE m_var_num;
|
|
BYTE m_obj_str[100];
|
|
BYTE m_obj_clist[120];
|
|
BYTE m_obj_cnum;
|
|
BYTE m_obj_vlist[200];
|
|
BYTE m_obj_vnum;
|
|
BYTE m_if_len;
|
|
BYTE m_if_part[50];
|
|
BYTE m_then_len;
|
|
BYTE m_then_part[50];
|
|
BYTE m_else_len;
|
|
BYTE m_else_part[50];
|
|
LONG m_curslice;
|
|
};
|
|
|
|
struct TARGET_FORMULA_CTRL_STRU
|
|
{
|
|
LONG var_num;
|
|
LONG const_num;
|
|
LONG if_len;
|
|
LONG then_len;
|
|
LONG else_len;
|
|
};
|
|
|
|
struct DATA_DESCRIBLE_STRU
|
|
{
|
|
LONG data_type;
|
|
char data_value[4];
|
|
};
|
|
|
|
#define HOST_NAME_LENGTH 32
|
|
#define MAX_NODE_NUM 4
|
|
typedef struct
|
|
{
|
|
char m_machine_name[HOST_NAME_LENGTH];
|
|
BYTE m_netnode_no;
|
|
BYTE m_tcitype;
|
|
DWORD m_target_addr;
|
|
short m_target_port;
|
|
QLONG irn;
|
|
} NODE_STRUCT;
|
|
|
|
typedef struct
|
|
{
|
|
struct
|
|
{
|
|
BOOLEAN enable;
|
|
char name[MAX_NAME_SIZE];
|
|
} interfaces;
|
|
NODE_STRUCT m_node[MAX_NODE_NUM];
|
|
} struNodeOption;
|
|
|
|
typedef struct
|
|
{
|
|
char name[MAX_NAME_SIZE];
|
|
char pass[MAX_PSW_SIZE];
|
|
} struUserInfor;
|
|
|
|
typedef struct
|
|
{
|
|
unionCP56Time now;
|
|
BOOLEAN logined;
|
|
BOOLEAN watchdog_type;
|
|
BOOLEAN log_enabled;
|
|
BOOLEAN single;
|
|
BOOLEAN bOldConfig; //是否为原配置文件
|
|
char yk_pass[MAX_PSW_SIZE];
|
|
short yk_keep;
|
|
short interval_time;
|
|
WORD zjd_log_bind_port;
|
|
DWORD zjd_log_bind_addr;
|
|
DWORD ticks;
|
|
DWORD timers;
|
|
DWORD auto_reset_interval;
|
|
|
|
char projectName[64]; //项目名称
|
|
char version[64]; //配置文件版本信息
|
|
} struSystem;
|
|
|
|
typedef struct
|
|
{
|
|
char name[MAX_NAME_SIZE];
|
|
BOOLEAN state;
|
|
LONG baud;
|
|
BYTE data;
|
|
BYTE parity;
|
|
BYTE stop;
|
|
short timeout;
|
|
} struPort;
|
|
|
|
typedef struct
|
|
{
|
|
BYTE in_buf[MAX_PORT_BUFFER_SIZE];
|
|
BYTE out_buf[MAX_PORT_BUFFER_SIZE];
|
|
short in_load;
|
|
short in_save;
|
|
short out_load;
|
|
short out_save;
|
|
} struPortBuffer;
|
|
|
|
typedef struct
|
|
{
|
|
struPort ports[HARDWARE_PORTS_NUM];
|
|
} struHardware;
|
|
|
|
#define SELFRESETTING 0
|
|
#define LATCHED 1
|
|
#define PULSED 2
|
|
|
|
typedef struct
|
|
{
|
|
BOOLEAN yx1Enable; //function 1
|
|
BOOLEAN yx2Enable; //function 3
|
|
BOOLEAN yc1Enable; //function 3
|
|
BOOLEAN yc2Enable; //function 3
|
|
BOOLEAN yc3Enable;
|
|
BOOLEAN yc4Enable;
|
|
BOOLEAN ym1Enable;
|
|
BOOLEAN ym2Enable;
|
|
BYTE yx1FuncCode;
|
|
BYTE yx2FuncCode;
|
|
BYTE yc1FuncCode;
|
|
BYTE yc2FuncCode;
|
|
BYTE yc3FuncCode;
|
|
BYTE yc4FuncCode;
|
|
BYTE ym1FuncCode;
|
|
BYTE ym2FuncCode;
|
|
WORD yx1Begin;
|
|
short yx1Count;
|
|
WORD yx2Begin;
|
|
short yx2Count;
|
|
WORD yc1Begin;
|
|
short yc1Count;
|
|
WORD yc2Begin;
|
|
short yc2Count;
|
|
WORD yc3Begin;
|
|
short yc3Count;
|
|
WORD yc4Begin;
|
|
short yc4Count;
|
|
WORD ym1Begin;
|
|
short ym1Count;
|
|
WORD ym2Begin;
|
|
short ym2Count;
|
|
} struModbusOption;
|
|
|
|
typedef struct
|
|
{
|
|
WORD idcode[MAX_PROC_OPTION_SIZE/2];
|
|
} struDLT645Option;
|
|
|
|
//add by assouan for network options
|
|
typedef struct
|
|
{
|
|
BOOLEAN ignored_source;
|
|
BYTE socket_type;
|
|
WORD bind_port;
|
|
WORD target_port;
|
|
DWORD bind_addr;
|
|
DWORD target_addr;
|
|
} struNetWorkOption;
|
|
//end
|
|
|
|
typedef struct
|
|
{
|
|
BOOLEAN use_owner_config; //单元配置是否启用
|
|
struModbusOption modbus;
|
|
} struUnitModbusOption;
|
|
|
|
typedef struct
|
|
{
|
|
BYTE addressLength;
|
|
BYTE sizeOfTypeId; /* size of the type id (default = 1 - don't change) */
|
|
BYTE sizeOfVSQ; /* don't change */
|
|
BYTE sizeOfCOT; /* size of COT (1/2 - default = 2 -> COT includes OA) */
|
|
BYTE originatorAddress; /* originator address (OA) to use (0-255) */
|
|
BYTE sizeOfCA; /* size of common address (CA) of ASDU (1/2 - default = 2) */
|
|
BYTE sizeOfIOA; /* size of information object address (IOA) (1/2/3 - default = 3) */
|
|
BYTE maxSizeOfASDU; /* maximum size of the ASDU that is generated - the maximum maximum value is 249 for IEC 104 and 254 for IEC 101 */
|
|
BOOLEAN useSingleCharACK; //Use Single Charachter 0xE5 as Link Layer acknowledgement
|
|
BOOLEAN use_full_time; //Specification of the format of time tags for process information:
|
|
//- short format: CP24Time2a (minutes and milliseconds up to 59.59999)
|
|
//- long format: CP56Time2a (complete date and time representation, 2 charachter year representation 00 to 99)
|
|
BOOLEAN use_ack_commands_on_reception; //Specification whether Activation confirmation shall be send immediatelay after receiption of a command
|
|
//Necessary if the primary station uses a fix timeout period with low tolerance
|
|
//Has no affect on the source of Activation Termination
|
|
BOOLEAN use_double_trans_mode; //If enabled: (and if Transit with Timestamp is enabled)
|
|
//Information in monitoring direction will be transitted twice:
|
|
//1. With high priority, without time stamp.
|
|
//2. With low priority, with time stamp.
|
|
//(Pulse counter PCV are not affected)
|
|
BOOLEAN use_exclusive; //If enabled, the serial interfaces of a redundant
|
|
//subdevice communication line will be accessed exclusive.
|
|
//That means as long as one interface is accessed all other interfaces of
|
|
//this redundant line are blocked.
|
|
BYTE dir_bit; //Specification of the direction bit DIR of the Link layer control Field
|
|
//to be used by the transmitter
|
|
//Value range: 0 or 1
|
|
//Relevant in balanced mode only
|
|
BYTE communication_retry; //Maximun number of transission repetitions
|
|
//in case of consecutive transmission disturbances
|
|
//Value range: 1 to 255
|
|
//Relevant at slave interface in balanced mode only
|
|
WORD cycle_time_test_link; //Specification whether Test Link messages shall be sent
|
|
//If selected, Test Link message will be sent if within the specified time
|
|
//no Application message had been sent
|
|
//Relevant in balanced mode only
|
|
WORD time_out; //Link Layer response/confirmation time out interval in seconds.
|
|
//Relevant at Master interface in balanced and unbalanced mode and
|
|
//at slave interface in balanced mode only.
|
|
//Value range: 1 to 6000
|
|
WORD cycle_time_offline; //Specification whether offline supervision of the primary station shall take place
|
|
//Relevant at slave interface and unblanced mode only
|
|
WORD background_scan_cycle; //If enabled:
|
|
//Background scan according to IEC60870-5-101/104
|
|
//will be send with the configured cycle time.
|
|
WORD timeoutForACK;
|
|
WORD timeoutRepeat;
|
|
BYTE EI_Priority; //链路初始化结束
|
|
BYTE CD_Priority; //延时采集
|
|
BYTE CS_Priority; //时钟同步
|
|
BYTE YK_Priority; //遥控遥调
|
|
BYTE TS_Priority; //测试
|
|
BYTE RP_Priority; //过程复位
|
|
BYTE IC_Priority; //总召唤
|
|
BYTE CI_Priority; //召唤累积量
|
|
BYTE YXBW_Priority; //遥信变位
|
|
BYTE EVENT_Priority; //事件记录
|
|
BYTE CYC_Priority; //循环数据
|
|
BYTE Back_Priority; //背景扫描
|
|
BYTE YCBW_Priority; //变位遥测
|
|
BYTE Unknow_Priority; //未知的应用确认
|
|
BYTE File_Priority; //文件传输
|
|
BYTE Group_Priority; //组召唤
|
|
|
|
BOOLEAN double_link_ack; //是否双向链路确认,在平衡方式时使用
|
|
BOOLEAN start_station; //是否启动站,在平衡方式时使用
|
|
|
|
WORD yx_start_address; //遥信起始地址
|
|
WORD yc_start_address; //遥测起始地址
|
|
WORD ym_start_address; //遥脉起始地址
|
|
|
|
BYTE yc_type; //默认遥测类型
|
|
BOOLEAN use_cycle_interrogation_command;//使用循环总召唤,仅用于主协议
|
|
WORD t4; //总召唤间隔,仅用于主协议
|
|
WORD t5; //召唤电度量间隔,仅用于主协议
|
|
} struIEC101Option;
|
|
|
|
typedef struct
|
|
{
|
|
struNetWorkOption net;
|
|
BYTE yx_type;
|
|
BYTE yc_type;
|
|
BYTE yk_type;
|
|
BOOLEAN need_resend; //是否重发
|
|
BOOLEAN need_cyc_send; //循环上送全遥测及全遥信
|
|
char cot_size; //
|
|
char asdu_addr_size; //Length of Address fixed to 16 bit
|
|
//Structured address with underscore as delimiter
|
|
//Example: 3_5_8 defines 16-bit address with 3 structure elements:
|
|
//3 bit most significant
|
|
//5 bit medium signigicant
|
|
//8 bit least significant
|
|
char info_addr_size; //Length of Information Object Address fixed to 24 bit!
|
|
//Structured address with underscore as delimiter
|
|
//Example: 3_5_6_3_7 defines 24-bit address with 5 structure elements.
|
|
BOOLEAN use_ack_commands_on_reception; //Specification whether Activation confirmation shall be send immediatelay after receiption of a command
|
|
//Necessary if the primary station uses a fix timeout period with low tolerance
|
|
//Has no affect on the source of Activation Termination
|
|
BYTE t1; //t1: Time-out of send APDUs or test APDUs
|
|
//1 to 255 seconds; default value: 15 seconds
|
|
BYTE t2; //t2: Time-out for acknowledges in case of no data messages
|
|
//1 to 255 seconds; default value: 10 seconds
|
|
//t2 < t1
|
|
BYTE t0; //T0: Time-out for connecting the server.
|
|
WORD t3; //T3: Time-out for sending test frames in case of a long idle state
|
|
//1 to 65535 seconds; default value: 20 seconds
|
|
short k; //k: maximun differance receive sequence number to send sequence count variable
|
|
//1 to 32767 APDUs; default value: 12 APDUs
|
|
short w; //Latest acknowledge after receiving w I format APDUs
|
|
//1 to 32767 APDUs; default value: 8 APDUs
|
|
//(w should not exceed tow-thirds of k)
|
|
WORD background_scan_cycle; //If enabled:
|
|
//Background scan according to IEC60870-5-101/104
|
|
//will be send with the configured cycle time.
|
|
WORD yx_start_address; //遥信起始地址,仅用于从协议
|
|
WORD yc_start_address; //遥测起始地址,仅用于从协议
|
|
WORD ym_start_address; //遥脉起始地址,仅用于从协议
|
|
|
|
BOOLEAN use_cycle_interrogation_command;//使用循环总召唤,仅用于主协议
|
|
WORD t4; //总召唤间隔,仅用于主协议
|
|
WORD t5; //召唤电度量间隔,仅用于主协议
|
|
DWORD irn; //用于加密上传协议时的编码
|
|
|
|
BOOLEAN send_start_dt; //发送启动帧
|
|
BOOLEAN use_send_test; //使用发送测试帧
|
|
BYTE send_test_type; //发送测试帧类型
|
|
BOOLEAN use_send_end_of_initialisation; //发送初始化结束帧
|
|
BOOLEAN use_ns_nr_check; //nsnr检查
|
|
BYTE bres1;
|
|
BYTE bres2;
|
|
WORD wres1;
|
|
} struIEC104Option;
|
|
|
|
#define XT9712_YC_TYPE_DEFAULT 0
|
|
#define XT9712_YC_TYPE_FLOAT 1
|
|
typedef struct
|
|
{
|
|
struNetWorkOption net;
|
|
BYTE yc_type;
|
|
BYTE res;
|
|
WORD yx_max;
|
|
WORD yc_max;
|
|
WORD ym_max;
|
|
} struXT9712Option;
|
|
|
|
#define IEC103_YK_USE_ASDU64 0 //南瑞、南京电研遥控方式
|
|
#define IEC103_YK_USE_ASDU20 1 //国外遥控方式 一般命令
|
|
#define IEC103_YK_USE_ASDU10 2 //南自遥控方式 通用数据
|
|
typedef struct
|
|
{
|
|
BYTE yk_type; //遥控方式
|
|
BOOLEAN FCB; //复位帧计数位
|
|
BOOLEAN CU; //复位通信单元
|
|
BOOLEAN IGI; //总召唤
|
|
BOOLEAN SYNC; //对时
|
|
BOOLEAN single_SYNC; //单个装置对时
|
|
BYTE retry_times; //重试次数
|
|
BYTE ignore_DFC; //忽略DFC位
|
|
DWORD igi_gap; //总召唤间隔
|
|
DWORD retry_time; //重连时间
|
|
} struIEC103Option;
|
|
|
|
typedef struct
|
|
{
|
|
BYTE group_num;
|
|
BYTE group_no;
|
|
BOOLEAN query1;
|
|
BOOLEAN query2;
|
|
BOOLEAN yc_query;
|
|
BOOLEAN yx_query;
|
|
BOOLEAN analogue_query;
|
|
BOOLEAN ym_query;
|
|
} struNSAOption;
|
|
|
|
typedef struct
|
|
{
|
|
char client_id[MAX_ID_LENGTH];
|
|
char device_id[MAX_ID_LENGTH];
|
|
char host[128];
|
|
char username[128];
|
|
char password[128];
|
|
char topic_version[128];
|
|
|
|
WORD target_port;
|
|
LONG connectTimeout;
|
|
LONG keepAliveInterval;
|
|
LONG connectInterval;
|
|
LONG publishInterval;
|
|
} struISSMQTTOption;
|
|
|
|
typedef struct
|
|
{
|
|
char client_id[MAX_ID_LENGTH];
|
|
char device_id[MAX_ID_LENGTH];
|
|
char host[128];
|
|
char username[128];
|
|
char password[128];
|
|
char topic[128];
|
|
|
|
WORD target_port;
|
|
LONG connectTimeout;
|
|
LONG keepAliveInterval;
|
|
LONG connectInterval;
|
|
} struLMMQTTOption;
|
|
|
|
typedef union
|
|
{
|
|
BYTE data[MAX_PROC_OPTION_SIZE];
|
|
struModbusOption modbus;
|
|
struDLT645Option dlt645;
|
|
struNetWorkOption network;
|
|
struIEC104Option iec104;
|
|
struIEC103Option iec103;
|
|
struIEC101Option iec101;
|
|
} unionProcOption;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
BYTE type;
|
|
BYTE state;
|
|
BOOLEAN time_accept; //accept set time command from this proc
|
|
BYTE proto;
|
|
BYTE order; //CARD or PORT order
|
|
BYTE mode; //slave mode or master mode or duplex mode
|
|
short time_gap; //send out time from this proc 18.2c/s
|
|
short poll_gap; //send out command 18.2c/s
|
|
short softdog; //software watchdog counter
|
|
short units[PROCESS_UNIT_NUM];
|
|
unionProcOption option;
|
|
QLONG irn;
|
|
} struProcess;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
short order;
|
|
BYTE value;
|
|
BYTE qds; //品质描述
|
|
BOOLEAN yxbw;
|
|
BYTE m_param[MAX_UNIT_POINT_PARAM_SIZE];
|
|
DWORD update_time;
|
|
QLONG irn;
|
|
//是否取反,default: 0
|
|
BOOLEAN invert;
|
|
} struUnitYX;
|
|
|
|
#if 0
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struUnitYXStatic;
|
|
#endif
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
short order;
|
|
short factor; //比例系数
|
|
LONG value; //遥测值
|
|
float coef;
|
|
float base;
|
|
BYTE qds; //品质描述
|
|
BOOLEAN ycbw; //遥测变位标识
|
|
short change_pos;
|
|
BYTE m_param[MAX_UNIT_POINT_PARAM_SIZE];
|
|
DWORD update_time;
|
|
QLONG irn;
|
|
|
|
//是否高频属性, 0 - 不是, 1 - 是
|
|
BOOLEAN highSpeed;
|
|
//上界
|
|
float upBound;
|
|
//下界
|
|
float lowBound;
|
|
//限值1, default: 0
|
|
BOOLEAN limit1Enable;
|
|
//限值1下限
|
|
float limit1Low;
|
|
//限值1上限
|
|
float limit1High;
|
|
//限值2, default: 0
|
|
BOOLEAN limit2Enable;
|
|
//限值2上限
|
|
float limit2High;
|
|
//限值2下限
|
|
float limit2Low;
|
|
} struUnitYC;
|
|
|
|
#if 0
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struUnitYCStatic;
|
|
#endif
|
|
|
|
typedef struct
|
|
{
|
|
short order;
|
|
LONG value;
|
|
union {
|
|
float flVal;
|
|
DWORD code;
|
|
};
|
|
BYTE qds;
|
|
} struYCBW;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
short order;
|
|
DWORD value;
|
|
float coef;
|
|
float base;
|
|
BYTE m_param[MAX_UNIT_POINT_PARAM_SIZE];
|
|
DWORD update_time;
|
|
QLONG irn;
|
|
} struUnitYM;
|
|
|
|
#if 0
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struUnitYMStatic;
|
|
#endif
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
short order;
|
|
BOOLEAN selected;
|
|
BYTE m_param[MAX_UNIT_POINT_PARAM_SIZE];
|
|
QLONG irn;
|
|
} struUnitYK;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struUnitYKStatic;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
short order;
|
|
BOOLEAN selected;
|
|
BYTE m_param[MAX_UNIT_POINT_PARAM_SIZE];
|
|
QLONG irn;
|
|
} struUnitYT;
|
|
|
|
#if 0
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struUnitYTStatic;
|
|
#endif
|
|
|
|
typedef struct
|
|
{
|
|
BYTE state;
|
|
BYTE type;
|
|
BYTE addr[MAX_UNIT_ADDR_SIZE];
|
|
BYTE m_param[MAX_UNIT_PARAM_SIZE]; //每个单元有256个字节的参数。
|
|
short yxcount;
|
|
short yccount;
|
|
short ymcount;
|
|
short ykcount;
|
|
short ytcount;
|
|
short softdog;
|
|
LONG yxbwload;
|
|
LONG soeload;
|
|
LONG ycbwload;
|
|
LONG value; //单元状态
|
|
struUnitYX* yxs;
|
|
#if USE_32BITS
|
|
LONG res1;
|
|
#endif
|
|
struUnitYC* ycs;
|
|
#if USE_32BITS
|
|
LONG res2;
|
|
#endif
|
|
struUnitYM* yms;
|
|
#if USE_32BITS
|
|
LONG res3;
|
|
#endif
|
|
struUnitYK* yks;
|
|
#if USE_32BITS
|
|
LONG res4;
|
|
#endif
|
|
struUnitYT* yts;
|
|
#if USE_32BITS
|
|
LONG res5;
|
|
#endif
|
|
QLONG irn;
|
|
} struUnit;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE<<2)];
|
|
char model[MAX_MODEL_SIZE];
|
|
|
|
char nodeId[MAX_ID_LENGTH];
|
|
char deviceId[MAX_ID_LENGTH];
|
|
char manufacturerId[MAX_ID_LENGTH];
|
|
} struUnitStatic;
|
|
|
|
typedef struct
|
|
{
|
|
struHardware hardware;
|
|
struProcess processes[PROCESSES_NUM];
|
|
struUnit units[UNIT_NUM];
|
|
} struConfig;
|
|
|
|
typedef struct
|
|
{
|
|
BYTE value; //状态支持SPI及DPI
|
|
BYTE qds; //品质描述
|
|
BYTE inv; //<0>=不取反,<1>=取反
|
|
short auto_reset; //自动复归
|
|
short op_unit;
|
|
DWORD bw_time; //变位时刻
|
|
DWORD update_time;//变位时刻
|
|
} struYX;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struYXStatic;
|
|
|
|
typedef struct
|
|
{
|
|
BYTE qds; //品质描述
|
|
short op_unit;
|
|
LONG value; //遥测值
|
|
float coef;
|
|
float base;
|
|
DWORD update_time; //变位时刻
|
|
} struYC;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struYCStatic;
|
|
|
|
typedef struct
|
|
{
|
|
float coef;
|
|
float base;
|
|
DWORD value; //遥脉值
|
|
DWORD update_time; //变位时刻
|
|
short op_unit;
|
|
short res;
|
|
} struYM;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struYMStatic;
|
|
|
|
typedef struct
|
|
{
|
|
BOOLEAN value;
|
|
short state;
|
|
short result;
|
|
DWORD op_time;
|
|
short op_unit;
|
|
} struYK;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struYKStatic;
|
|
|
|
typedef struct
|
|
{
|
|
LONG value;
|
|
short state;
|
|
short result;
|
|
DWORD op_time;
|
|
short op_unit;
|
|
} struYT;
|
|
|
|
typedef struct
|
|
{
|
|
char name[(MAX_NAME_SIZE << 2)];
|
|
} struYTStatic;
|
|
|
|
typedef struct
|
|
{
|
|
unionCP56Time st;
|
|
BYTE value;
|
|
BYTE qds;
|
|
BYTE type;
|
|
short order;
|
|
short uid;
|
|
short point;
|
|
} struYXBW;
|
|
|
|
typedef struct
|
|
{
|
|
unionCP56Time st;
|
|
BYTE value;
|
|
BYTE qds;
|
|
short order;
|
|
short uid;
|
|
short point;
|
|
} struSOE;
|
|
|
|
typedef struct
|
|
{
|
|
unionCP56Time st;
|
|
LONG value;
|
|
BYTE qds; //品质描述
|
|
BYTE type;
|
|
short order;
|
|
short uid;
|
|
short point;
|
|
} struYCBWBuffer;
|
|
|
|
typedef struct
|
|
{
|
|
struYX *yxs;
|
|
struYC *ycs;
|
|
struYM *yms;
|
|
struYK *yks;
|
|
struYT *yts;
|
|
} struDatabase;
|
|
|
|
typedef struct
|
|
{
|
|
WORD year;
|
|
BYTE month;
|
|
BYTE day;
|
|
BYTE hour;
|
|
BYTE minute;
|
|
BYTE second;
|
|
BYTE type;
|
|
BYTE data[32];
|
|
} struRunLog;
|
|
|
|
typedef struct
|
|
{
|
|
unionCP56Time st;
|
|
BYTE value;
|
|
BYTE type; //SELREQ\SELOUT\SELRET\ABRREQ\EXEREQ\EXEOUT
|
|
BYTE source; //NONE\LOCAL\PROC
|
|
short point; //DATABASE PT
|
|
short uid; //unit id
|
|
} struYKLog;
|
|
|
|
typedef struct
|
|
{
|
|
unionCP56Time st;
|
|
DWORD value;
|
|
BYTE type; //SELREQ\SELOUT\SELRET\ABRREQ\EXEREQ\EXEOUT
|
|
BYTE source; //NONE\LOCAL\PROC
|
|
short point; //DATABASE PT
|
|
short uid; //unit id
|
|
} struYTLog;
|
|
|
|
typedef struct
|
|
{
|
|
BOOLEAN enabled;
|
|
char res;
|
|
short mon_port;
|
|
short mon_unit;
|
|
DWORD load;
|
|
DWORD save;
|
|
DWORD rx_count;
|
|
DWORD tx_count;
|
|
DWORD rf_count;
|
|
DWORD tf_count;
|
|
char *buf;
|
|
} struDispBuffer;
|
|
|
|
typedef struct
|
|
{
|
|
BOOLEAN enabled;
|
|
char res;
|
|
DWORD load;
|
|
DWORD save;
|
|
char *buf;
|
|
} struMsgBuffer;
|
|
|
|
typedef struct
|
|
{
|
|
LONG count;
|
|
struYCBW data[UNIT_YC_MAX];
|
|
} YCBWBuffer;
|
|
|
|
typedef struct
|
|
{
|
|
LONG order;
|
|
BYTE qds;
|
|
BOOLEAN value;
|
|
} struYXData;
|
|
|
|
typedef struct
|
|
{
|
|
LONG order;
|
|
BYTE qds;
|
|
BOOLEAN value;
|
|
unionCP56Time ct;
|
|
} struEventsData;
|
|
|
|
typedef struct
|
|
{
|
|
LONG count;
|
|
struYXData data[DATABASE_YXBW_NUM];
|
|
} YXBWBuffer;
|
|
|
|
typedef struct
|
|
{
|
|
LONG count;
|
|
struEventsData data[DATABASE_SOE_NUM];
|
|
} EventBuffer;
|
|
|
|
#pragma pack()
|
|
|
|
typedef struct {
|
|
DWORD value;
|
|
const char* strptr;
|
|
} value_string;
|
|
|
|
static const value_string yk_state[] = {
|
|
{ YKS_IDLE, "YKS_IDLE" },
|
|
{ YKS_SELREQ, "YKS_SELREQ" },
|
|
{ YKS_SELING, "YKS_SELING" },
|
|
{ YKS_SELED, "YKS_SELED" },
|
|
{ YKS_ABRREQ, "YKS_ABRREQ" },
|
|
{ YKS_EXEREQ, "YKS_EXEREQ" },
|
|
{ YKS_EXEING, "YKS_EXEING" },
|
|
{ YKS_EXEED, "YKS_EXEED" },
|
|
{ YKS_ABRED, "YKS_ABRED" }
|
|
};
|
|
|
|
static const value_string yk_result[] = {
|
|
{ YKR_IDLE, "YKR_IDLE" },
|
|
{ YKR_SUCC, "YKR_SUCC" },
|
|
{ YKR_FAIL, "YKR_FAIL" },
|
|
{ YKR_OVER, "YKR_OVER" },
|
|
{ YKR_OPER, "YKR_OPER" }
|
|
};
|
|
|
|
static const value_string yt_state[] = {
|
|
{ YTS_IDLE, "YTS_IDLE" },
|
|
{ YTS_SELREQ, "YTS_SELREQ" },
|
|
{ YTS_SELING, "YTS_SELING" },
|
|
{ YTS_SELED, "YTS_SELED" },
|
|
{ YTS_ABRREQ, "YTS_ABRREQ" },
|
|
{ YTS_EXEREQ, "YTS_EXEREQ" },
|
|
{ YTS_EXEING, "YTS_EXEING" },
|
|
{ YTS_EXEED, "YTS_EXEED" },
|
|
{ YTS_ABRED, "YTS_ABRED" }
|
|
};
|
|
|
|
static const value_string yt_result[] = {
|
|
{ YTR_IDLE, "YTR_IDLE" },
|
|
{ YTR_SUCC, "YTR_SUCC" },
|
|
{ YTR_FAIL, "YTR_FAIL" },
|
|
{ YTR_OVER, "YTR_OVER" },
|
|
{ YTR_OPER, "YTR_OPER" }
|
|
};
|
|
|
|
class CYCBW;
|
|
class CYXBW;
|
|
class CSOE;
|
|
class CYKLog;
|
|
class CYTLog;
|
|
class CProcess;
|
|
|
|
extern BOOLEAN systemRunFlag;
|
|
extern BOOLEAN synchronized;
|
|
extern BOOLEAN zlog_inited;
|
|
extern struSystem system32;
|
|
extern struConfig config;
|
|
extern struDatabase database;
|
|
extern CYCBW ycbw;
|
|
extern CYXBW yxbw;
|
|
extern CSOE soe;
|
|
extern CYKLog yklog;
|
|
extern CYTLog ytlog;
|
|
extern CProcess* procs[PROCESSES_NUM];
|
|
extern struUnitStatic static_units[UNIT_NUM];
|
|
extern struDispBuffer channelBuffer;
|
|
extern struMsgBuffer msgBuffer;
|
|
extern struNodeOption nodes;
|
|
extern char configpath[MAX_PATH]; //配置文件所在目录
|
|
extern char configfile[MAX_PATH]; //配置文件
|
|
|
|
extern noPollConn *g_conn;
|
|
typedef struct
|
|
{
|
|
//网络配置信息
|
|
struNetWorkOption network;
|
|
//mqtt接入信息
|
|
char client_id[128];
|
|
char username[128];
|
|
char password[128];
|
|
char device_id[128];
|
|
char devType[32];
|
|
char devName[32];
|
|
char mfgInfo[32];
|
|
char version[32];
|
|
char hardVersion[32];
|
|
|
|
LONG connectTimeout;
|
|
LONG keepAliveInterval;
|
|
LONG connectInterval;
|
|
LONG dataSendInterval;
|
|
LONG statusUpdateInterval;
|
|
} struMQTTOption;
|
|
|
|
#define QOS_LEVEL_0 0
|
|
#define QOS_LEVEL_1 1
|
|
#define QOS_LEVEL_2 2
|
|
|
|
#define MQTT_DEFAULT_PORT 1883
|
|
|
|
#pragma pack()
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
const char* val_to_str(DWORD val, const value_string* vs, const char* fmt);
|
|
void StringToHex(const char* pStr, BYTE* pData);
|
|
void HexToString(const BYTE* pData, char* pStr, int count);
|
|
BOOLEAN get_system_time(unionCP56Time* lpSystemTime);
|
|
BOOLEAN set_system_time(unionCP56Time* lpSystemTime);
|
|
DWORD bcd_to_int(const BYTE *bcd, int length);
|
|
void int_to_bcd(int dec, BYTE *bcd, int length);
|
|
DWORD BufToVal(BYTE* buf, int lenth, BOOLEAN bBigEndian = FALSE);
|
|
int ValToBuf(BYTE* buf, DWORD val, int lenth, BOOLEAN bBigEndian = FALSE);
|
|
int unionCP56TimeToBuf(BYTE* buf, unionCP56Time st);
|
|
int GetFileSize(const char* fname);
|
|
time_t unionCP56TimetoTime_t(unionCP56Time* st);
|
|
unionCP56Time Time_ttounionCP56Time(time_t st);
|
|
QLONG filetime_to_unix(QLONG ft);
|
|
QWORD getTimeInMs();
|
|
//////////////////////////////////////////////////////////////////////////
|
|
typedef enum
|
|
{
|
|
LOG_NULL = 0,
|
|
LOG_ERROR = 1,
|
|
LOG_WARN = 2,
|
|
LOG_INFO = 3,
|
|
LOG_DEBUG = 4
|
|
} eLogLevel;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
void yk(void);
|
|
void yt(void);
|
|
void dumpLogs(void);
|
|
QWORD snowflake_next_id(void);
|
|
BOOLEAN initialize_system(BOOLEAN, BOOLEAN, const char*, char*);
|
|
BOOLEAN initialize_thread(void);
|
|
BOOLEAN destroy_thread(void);
|
|
BOOLEAN WriteDatabaseCFG(void);
|
|
BOOLEAN WriteSystemCFG(void);
|
|
BOOLEAN WriteStaticUnitCFG(void);
|
|
BOOLEAN ReadStaticUnitCFG(void);
|
|
void vLog(eLogLevel eLevel, const char* szFmt, ...);
|
|
#if 0
|
|
int validate_utf8(const char *str, int len);
|
|
int random_bytes(void *bytes, int count);
|
|
#endif
|
|
DWORD ReadMsgRingBuff(char *rbuff, DWORD len);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //_ZJD_PUBLIC_DATA_H_
|
|
|