548 lines
14 KiB
C
Raw Permalink Normal View History

2025-04-30 16:24:29 +08:00
#ifndef INTERACT_123_INCLUDED
#define INTERACT_123_INCLUDED
#include "glbtypes.h"
#include "general_defines.h"
#include "general_socket.h"
#include "basetype.h"
#include "comtrade_read.h"
#ifdef __cplusplus
extern "C" {
#endif
/************************************************************************/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8>
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD> */
#define SQLDB_PATH_NAME "cfg/commdb.sql3"
#define LOGS_PATH "../LOGS/"
#define SOELOG_PATH_NAME "../LOGS/soelog.sql3"
#define CHECKLOG_PATH_NAME "../LOGS/checklog.sql3"
#define OPERLOG_PATH_NAME "../LOGS/operlog.sql3"
//cbt add 2020.2.19 ң<>ű<EFBFBD>λд<CEBB><EFBFBD><EBB5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ⣬<DDBF><E2A3AC><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD>д<EFBFBD><D0B4>soe<6F><65><EFBFBD>ݿ<EFBFBD><DDBF>ķ<EFBFBD><C4B7><EFBFBD>
#define YX_BURST_LOG_PATH_NAME "../LOGS/yxlog.sql3" //cbt modified 2020.4.3 yx_burst_log.sql3 <20><>Ϊyxlog.sql3
//cbt add 2021.3.22 Ӳ<><D3B2>4.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽͬ<EFBFBD><EFBFBD>λ<EFBFBD>¼<EFBFBD>
#define DEVICE_LOG_PATH_NAME "../LOGS/devicelog.sql3"
//cbt add 2021.3.29 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>
#define PORTCFG_PATH_NAME "../protect/cfg/protdb.sql3"
//cbt modified 2021.3.29 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>Ϣ<EFBFBD>е<EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2<CEAA>ֽ<EFBFBD>,<2C>޸<EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ768
//<2F><><EFBFBD><EFBFBD>ң<EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD>
#define TELE_SIGNAL_NUM_MAX 768
//<2F><><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TELE_METRY_NUM_MAX 96
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD>
#define TELE_DEGREE_NUM_MAX 32
//<2F><><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
#define HARMON_METRY_NUM_MAX 648
//<2F><><EFBFBD><EFBFBD><EFBFBD>任ң<E4BBBB><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󻺳<EFBFBD>
#define BURST_SIGNAL_NUM_MAX 24
//ͨ<>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB>壬ֱ<E5A3AC><D6B1><EFBFBD>򹤾߻<F2B9A4BE>Һ<EFBFBD><D2BA>ת<EFBFBD><D7AA>
#define GENERAL_DATA_BUFF_LEN 264
//SOELOG<4F><47><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱҪɾ<D2AA><C9BE><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ʣ<EFBFBD><CAA3>MIN<49><4E>,2014-04-24 from 256 to 1536 to 2048
#define SOELOG_MAX_ITEMS 2048
#define SOELOG_MIN_ITEMS 2000
//CHECKLOG<4F><47><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱҪɾ<D2AA><C9BE><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ʣ<EFBFBD><CAA3>MIN<49><4E>
#define CHECKLOG_MAX_ITEMS 2048
#define CHECKLOG_MIN_ITEMS 2000
//YX_BURST_LOG<4F><47><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱҪɾ<D2AA><C9BE><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ʣ<EFBFBD><CAA3>MIN<49><4E>
#define YX_BURST_LOG_MAX_ITEMS 4096
#define YX_BURST_LOG_MIN_ITEMS 4000
//cbt modified 2019.5.22 <20>¼<EFBFBD><C2BC>Լ챨<D4BC><ECB1A8><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD>Ϊ10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ֡<C3BF><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>7<EFBFBD>ˣ<EFBFBD>Ӧ<EFBFBD><D3A6>Ϊ3<CEAA><33><EFBFBD><EFBFBD>һ֡<D2BB><D6A1><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>255<35><35>
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>棬ÿ<E6A3AC><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>(<28>Լ챨<D4BC><ECB1A8>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//#define ASDU_SOE_MAX_NUM 7
#define ASDU_SOE_MAX_NUM 3
//cbt add 2020.2.19 <20><><EFBFBD><EFBFBD>ң<EFBFBD>ű<EFBFBD>λ<EFBFBD><CEBB>ÿ֡<C3BF><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ20<32><30>ң<EFBFBD><D2A3>
#define ASDU_YXBW_MAX_NUM 20
#define CANIO_MAX_NUM (CLZType_IO_NUM)//4 //cbt modified 2021.3.23 Ӳ<><D3B2>4.0<EFBFBD><EFBFBD>IO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD>->5<>飬ͳһ<CDB3><D2BB><EFBFBD><EFBFBD>basetype.h<>еĺ궨<C4BA><EAB6A8>
#define CANIO_MAX_TYPE 8//7 //cbt modified 2021.3.23 Ӳ<><D3B2>4.0 ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD>͵İ<CDB5><C4B0>ӣ<EFBFBD>ԭ<EFBFBD><D4AD>ֻ<EFBFBD><D6BB>6<EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
//cbt modified 2020.12.09 <20>ٹ<EFBFBD><D9B9>ϱ<EFBFBD><CFB1><EFBFBD><E6A1A2><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>ǰһ֡<D2BB><D6A1>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>18<31><38>
#define FIEL_LIST_MAX_NUM_TA21_104 8 //901ת<31><D7AA>ר104Э<34><D0AD>ʱ<EFBFBD><CAB1>ÿ<EFBFBD><C3BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>3<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>18<31><38><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3>Ļ<EFBFBD>8<EFBFBD><38>
#define FIEL_LIST_MAX_NUM_TOOL_103 8
#define FIEL_LIST_MAX_NUM_YJ_103 8
//ghc 20231115
#define DEVICE_YX_INF_NUM 312
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD> */
typedef struct
{
ST_INT index; //<2F><>λң<CEBB>ŵ<EFBFBD>ʱ<EFBFBD>򣬲<EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ST_UCHAR value; //˫<><EFBFBD><E3B1A3>
ST_UCHAR quality;
ST_UCHAR valueChg; //<2F><><EFBFBD>ٻ<EFBFBD><D9BB>
ST_UCHAR qualityChg; //<2F><><EFBFBD>ٻ<EFBFBD><D9BB>
ST_UCHAR cp56[8];
} TELE_SIGNAL;
typedef struct
{
UNION_FLOAT value;
ST_UCHAR quality;
ST_UCHAR cp56[8];
UNION_FLOAT lastValue;
ST_UCHAR lastQuality;
ST_UCHAR lastCp56[8];
float menxian;
ST_INT timeSpace; //ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҲҪ<D2B2><D2AA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//cbt add 2020.10.20 ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>ң<EFBFBD><D2A3>ֵ*ϵ<><CFB5>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>103<30><33>104
float moduli;//ң<><D2A3>ϵ<EFBFBD><CFB5>
float base;//ң<><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} TELE_METRY;
typedef struct
{
UNION_FLOAT value;
ST_UCHAR quality;
} TELE_DEGREE;
typedef enum
{
DEVICE_COMM_STATUS_OFF=0,
DEVICE_COMM_STATUS_ON
} DEVICE_COMM_STATUS;
typedef enum
{
LINK_TYPE_TOOL_103=0,
LINK_TYPE_YJ_103,
LINK_TYPE_TA21_104,
LINK_TYPE_PROT_103,
LINK_TYPE_LCD_DIRT,
LINK_TYPE_PROG_SELF=0xFF,
} LINK_TYPE;
typedef enum
{
DEVICE_CMD_TYPE_DZ_CALL_SEC=0,
//DEVICE_CMD_TYPE_DZ_CALL_DATA_now,
DEVICE_CMD_TYPE_DZ_CALL_DATA,
DEVICE_CMD_TYPE_DZ_SET_SEC,
DEVICE_CMD_TYPE_DZ_SET_DATA_now,
DEVICE_CMD_TYPE_DZ_SET_DATA,
} DEVICE_CMD_TYPE_DZ_DOWN;
typedef enum
{
DEVICE_CMD_TYPE_DZ_CALL_SEC_return=0,
DEVICE_CMD_TYPE_DZ_CALL_DATA_return,
DEVICE_CMD_TYPE_DZ_SET_SEC_return,
DEVICE_CMD_TYPE_DZ_SET_DATA_return,
} DEVICE_CMD_TYPE_DZ_RETURN;
typedef struct
{
ST_INT inUse;
ST_DOUBLE lockTime; //<2F><>ÿ<EFBFBD><C3BF><EFBFBD>·<EFBFBD><C2B7>߾<EFBFBD><DFBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC>
ST_INT isDelt; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD>
} CMD_LOCK_PROPER;
typedef struct
{
CMD_LOCK_PROPER cmdLock;
//<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>
struct
{
LINK_TYPE linkType;
ST_INT linkIndex;
ST_UCHAR ykIndex;
ST_UCHAR dco;
ST_INT bufferLen;
ST_UCHAR bufferData[GENERAL_DATA_BUFF_LEN];
} cmdDown;
//<2F>ش𱣴<D8B4>
struct
{
ST_RET result; //<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
} cmdReturn;
} BUFFER_CMD_YK;
typedef struct
{
CMD_LOCK_PROPER cmdLock;
//<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>
struct
{
LINK_TYPE linkType;
ST_INT linkIndex;
ST_UCHAR chlIndex;
UNION_FLOAT dataVal;
} cmdDown;
//<2F>ش𱣴<D8B4>
struct
{
ST_RET result; //<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
} cmdReturn;
} BUFFER_CMD_KDJZ;
typedef struct
{
CMD_LOCK_PROPER cmdLock;
//<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>
struct
{
LINK_TYPE linkType;
ST_INT linkIndex;
DEVICE_CMD_TYPE_DZ_DOWN dzCmd;
ST_UCHAR dstDevAddr; //û<><C3BB>ʹ<EFBFBD><CAB9>
ST_UCHAR dzGroup;
ST_UCHAR dzNum;
UNION_FLOAT dzBuff[256];
} cmdDown;
//<2F>ش𱣴<D8B4>
struct
{
ST_RET result;
DEVICE_CMD_TYPE_DZ_RETURN cmdReturn;
ST_UCHAR dzGroup;
ST_UCHAR dzNum;
UNION_FLOAT dzBuff[256];
ST_UCHAR dzType[256]; //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
} cmdReturn;
ST_UCHAR dzType[256]; //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
} BUFFER_CMD_DZ;
typedef struct
{
CMD_LOCK_PROPER cmdLock;
//<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>
struct
{
LINK_TYPE linkType;
ST_INT linkIndex;
ST_UCHAR cmdType;
ST_UCHAR dstDev;
ST_INT asduLen; //<2F>·<EFBFBD>ASDU<44><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ԭ<EFBFBD>򷵻<EFBFBD>
ST_UCHAR asdu[GENERAL_DATA_BUFF_LEN];
} cmdDown;
//<2F>ش𱣴<D8B4>
struct
{
ST_RET result; //<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
ST_INT bufferLen;
ST_UCHAR bufferData[GENERAL_DATA_BUFF_LEN];
} cmdReturn;
} BUFFER_CMD_VERCALL;
typedef struct
{
CMD_LOCK_PROPER cmdLock;
//<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EEA3AC><D2B2><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>
struct
{
LINK_TYPE linkType;
ST_INT linkIndex;
ST_INT asduLen; //<2F>·<EFBFBD>ASDU<44><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ԭ<EFBFBD>򷵻<EFBFBD>
ST_UCHAR asdu[GENERAL_DATA_BUFF_LEN];
} cmdDown;
//<2F>ش𱣴<D8B4>
struct
{
ST_RET result; //<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
ST_INT bufferLen;
ST_UCHAR bufferData[GENERAL_DATA_BUFF_LEN];
} cmdReturn;
} BUFFER_CMD_FHLB;
typedef struct
{
CMD_LOCK_PROPER cmdLock;
//<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EEA3AC><D2B2><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>
struct
{
LINK_TYPE linkType;
ST_INT linkIndex;
ST_UCHAR dstDev; //Ŀ<><C4BF>װ<EFBFBD><D7B0>
ST_UCHAR segment;
ST_UCHAR group;
ST_INT asduLen; //<2F>·<EFBFBD>ASDU<44><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ԭ<EFBFBD>򷵻<EFBFBD>
ST_UCHAR asdu[GENERAL_DATA_BUFF_LEN];
} cmdDown;
//<2F>ش𱣴<D8B4>
struct
{
ST_RET result; //<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
ST_INT bufferLen; //<2F><>ngd<67><64>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵij<DAB5><C4B3><EFBFBD>
ST_UCHAR bufferData[GENERAL_DATA_BUFF_LEN];
} cmdReturn;
} BUFFER_CMD_SJZJ;
typedef struct
{
DEVICE_COMM_STATUS canioStatus;
ST_UCHAR dstDev; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ST_INT verBufferLen;
ST_UCHAR verBuffer[GENERAL_DATA_BUFF_LEN]; //1<><31><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD>֣<EFBFBD>2<EFBFBD><EFBFBD><E6B1BE>2У<32><D0A3>
//<2F>ٻ<EFBFBD><D9BB>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>
} CANIO_PROPERTY;
typedef struct
{
ST_UCHAR yxType;
} YXINF;
typedef struct
{
ST_UCHAR devType;
ST_UCHAR devAddr;
ST_UCHAR initialized; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><D2A3>Ϊ׼
DEVICE_COMM_STATUS devStatus;
ST_UINT lbPointMax; //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ST_UCHAR digtalStartNum;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
ST_CHAR iedName[256];//device<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iedName<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ST_UINT16 saveYxMaxInf; //cbt add 2021.8.3 <20>洢ң<E6B4A2>ű<EFBFBD>λ<EFBFBD>ķ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>Ŵ<EFBFBD>1<EFBFBD><31>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽӿڿ<D3BF><DABF><EFBFBD>device<63><65><EFBFBD><EFBFBD>
//cbt add 2021.11.8 װ<><D7B0><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ң<EFBFBD>ŷ<EFBFBD>Χ<EFBFBD>ɱ<EFBFBD>
ST_UINT16 deviceSoeMinInf;
ST_UINT16 deviceSoeMaxInf;
//cbt add 2022.2.15 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ST_UINT16 lbFileNumMax;
struct
{
DEVICE_COMM_STATUS yjStatus;
ST_INT verBufferLen;
ST_UCHAR verBuffer[GENERAL_DATA_BUFF_LEN]; //1<><31><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD>֣<EFBFBD>2<EFBFBD><EFBFBD><E6B1BE>2У<32><D0A3>
} yjProper;
struct
{
ST_INT verBufferLen;
ST_UCHAR verBuffer[GENERAL_DATA_BUFF_LEN]; //8<><38><EFBFBD>֣<EFBFBD>2<EFBFBD><EFBFBD><E6B1BE>2У<32><D0A3>
ST_DOUBLE lastRecv104; //<2F>ϴδ<CFB4>104<30><34><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><CAB1>
ST_DOUBLE offlineTime104; //cbt add 2020.2.24 <20><><EFBFBD><EFBFBD>104<30><34><EFBFBD>ӵĵ<D3B5><C4B5><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3A8>λ<EFBFBD><CEBB>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EBA3A9><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>104<30><34>վû<D5BE><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD>ʱװ<CAB1><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ŵ<EFBFBD><C5B5>𣻷<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>
} commcpuProper;
CANIO_PROPERTY canioProper[CANIO_MAX_NUM]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ
ST_INT monitorPort; //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>̵߳<DFB3><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
ST_INT teleSignalNum;
TELE_SIGNAL teleSignal[TELE_SIGNAL_NUM_MAX];
ST_INT teleMetryNum;
TELE_METRY teleMetry[TELE_METRY_NUM_MAX];
ST_INT teleDegreeNum;
TELE_DEGREE teleDegree[TELE_DEGREE_NUM_MAX];
//2016.01.22 add <20><><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ͨң<CDA8><D2A3>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ST_INT harmonMetryNum;
TELE_METRY harmonMetry[HARMON_METRY_NUM_MAX];
ST_INT generalIsFilled;
ST_UCHAR generalData[GENERAL_DATA_BUFF_LEN];
ST_INT generalIsFilled2;
ST_UCHAR generalData2[GENERAL_DATA_BUFF_LEN]; //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ 2013-05-10
ST_INT generalIsFilled3;
ST_UCHAR generalData3[GENERAL_DATA_BUFF_LEN]; //һ<><D2BB><EFBFBD><EFBFBD>3֡ 2013-06-09
//cbt add 2021.3.17 Ӳ<><D3B2>4.0
ST_INT generalIsFilled4;
ST_UCHAR generalData4[GENERAL_DATA_BUFF_LEN]; //һ<><D2BB><EFBFBD><EFBFBD>4֡ 2021.3.18
//cbt add 2021.5.17 Ӳ<><D3B2>4.0<EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>Ϊ<EFBFBD><EFBFBD>
ST_INT generalIsFilled5;
ST_UCHAR generalData5[GENERAL_DATA_BUFF_LEN]; //һ<><D2BB><EFBFBD><EFBFBD>5֡ 2021.5.17
//ң<>ű仯<C5B1><E4BBAF><EFBFBD><EFBFBD><EFBFBD><E4BBAF>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еȴ<D0B5><C8B4><EFBFBD><EFBFBD><EFBFBD>104
ST_INT burstSignalNum;
TELE_SIGNAL burstSignal[BURST_SIGNAL_NUM_MAX];
BUFFER_CMD_YK cmdYk;
BUFFER_CMD_KDJZ cmdKdzj; //<2F>̶<EFBFBD>У<EFBFBD><D0A3>
BUFFER_CMD_DZ cmdDz;
BUFFER_CMD_VERCALL cmdVercall;
BUFFER_CMD_FHLB cmdFhlb; //<2F>ж<EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棬ֱ<E6A3AC><D6B1>ת<EFBFBD><D7AA>
BUFFER_CMD_SJZJ cmdSjZj; //<2F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EEA3AC>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3BB><EFBFBD><EFBFBD>CPU<50>Ļ<EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
//ghc add 2023.11.15 ң<><D2A3><EFBFBD>¼<EFBFBD>inf<6E><66><EFBFBD><EFBFBD>ֵ
ST_UINT16 deviceYXMaxInf;
YXINF yxInfType[DEVICE_YX_INF_NUM];
} DEVICE_PROPERTY;
typedef enum
{
DEV_DST_TYPE_prot=0,
DEV_DST_TYPE_io_1=1,
DEV_DST_TYPE_io_2=2,
DEV_DST_TYPE_io_3=3,
DEV_DST_TYPE_io_4=4,
DEV_DST_TYPE_io_5=5, //cbt add 2021.3.23 Ӳ<><D3B2>4.0 <20>ӿ<EFBFBD>֧<EFBFBD><D6A7>5<EFBFBD><35>IO<49><4F><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
DEV_DST_TYPE_proctcfg=12,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>
DEV_DST_TYPE_yj=13,
DEV_DST_TYPE_commcpu=14,
DEV_DST_TYPE_all=0xFF //ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>
} DEV_DST_ADDR;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ַ
typedef struct{
ST_INT setHSRaddr; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>õĻ<C3B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ--ȡװ<C8A1><D7B0>eth0<68><30>ip<69><70><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD>
ST_RET setResult; //<2F><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>
ST_UCHAR setStep;//<2F><><EFBFBD>ò<EFBFBD><C3B2>裺0--<2D>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1--<2D>ȴ<EFBFBD><C8B4>ظ<EFBFBD>
ST_UCHAR failNum;//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܵĴ<DCB5><C4B4><EFBFBD>
ST_DOUBLE setLastTime;//<2F>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD>õ<EFBFBD>ʱ<EFBFBD><CAB1>
ST_DOUBLE setSpace;//<2F><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD>
ST_UCHAR sendcount;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>udp<64><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SOCKET_UDP_ATTRIB setUDP;//<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>UDPͨ<50><CDA8>
}FPGA_HSR;
//cbt add 2021.8.17<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>
#define MULTI_LB_UP_PROCESS
typedef struct
{
ST_UINT index;
ST_UINT millSec;
ST_UINT16 data[AnalogNUM+2];//<2F><>2<EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>
}LB_CHL_DATA;//dat<61>ļ<EFBFBD><C4BC><EFBFBD>ÿ<EFBFBD><C3BF>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>ʽ
typedef struct
{
ST_INT inUse;
ST_INT linkIndex;
ST_DOUBLE lockTime; //<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
ST_INT faultIndex;
//FaultItemType fault;
CFG_FILE_CHLINFO cfgInfo;
LB_CHL_DATA* lb_chl_data;
size_t fileSize;
}LB_UP_PROCESS;
ST_RET interact_init( const char *programName );
ST_RET interact_release( void );
ST_RET interact_handle( void );
DEVICE_PROPERTY * interact_get_device_property( ST_VOID );
CANIO_PROPERTY * interact_get_device_canio_property( ST_UCHAR dstDev );
ST_UCHAR interact_get_device_addr( ST_VOID );
ST_RET interact_set_device_commStatus( DEVICE_COMM_STATUS status );
ST_VOID * interact_get_cln_prot( ST_VOID );
ST_VOID * interact_get_cln_canio( ST_VOID );
ST_VOID * interact_get_srv_ta21( ST_VOID );
ST_VOID * interact_get_srv_tool( ST_VOID );
ST_VOID * interact_get_srv_yj( ST_VOID );
ST_INT interact_get_srv_yj_flag( ST_VOID );
ST_BOOLEAN interact_lock_judge( CMD_LOCK_PROPER *cmdLock );
ST_BOOLEAN interact_lock_judge_timeOut( CMD_LOCK_PROPER *cmdLock );
ST_BOOLEAN interact_lock_judge_needeel( CMD_LOCK_PROPER *cmdLock );
ST_RET interact_lock_add( CMD_LOCK_PROPER *cmdLock, ST_DOUBLE lockTime );
ST_RET interact_lock_add_time( CMD_LOCK_PROPER *cmdLock, ST_DOUBLE lockTime );
ST_RET interact_lock_cancel( CMD_LOCK_PROPER *cmdLock );
ST_RET interact_device_soelog_insert(ST_UCHAR type, const ST_UCHAR * soeData, ST_INT dataLen );
ST_RET interact_device_checklog_insert( const ST_UCHAR * checkData, ST_INT dataLen );
//cbt add 2019.8.15 <20><><EFBFBD>ý<EFBFBD>ң<EFBFBD>ű<EFBFBD>λд<CEBB><D0B4>soe<6F><65><EFBFBD>ݿ<EFBFBD><DDBF>еķ<D0B5>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ң<EFBFBD>ű<EFBFBD>λ
ST_RET interact_device_yx_burst_log_insert_to_soe( ST_INT yxIndex, ST_UCHAR yxData, const ST_UCHAR *cp56Time );
//cbt add 2020.2.19 ң<>ű<EFBFBD>λд<CEBB><EFBFBD><EBB5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ⣬<DDBF><E2A3AC><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD>д<EFBFBD><D0B4>soe<6F><65><EFBFBD>ݿ<EFBFBD><DDBF>ķ<EFBFBD><C4B7><EFBFBD>
ST_RET interact_device_yx_burst_log_insert(ST_UCHAR type, ST_INT yxIndex, ST_UCHAR yxData, const ST_UCHAR *cp56Time );
ST_RET interact_conver_datetype_to_cp56( const void *dateT, ST_UCHAR *cp56 );
ST_RET interact_set_device_property_lastrecv104( ST_VOID );
ST_RET interact_set_device_property( ST_INT teleMetryNum, ST_INT teleSignalNum, ST_INT teleDegreeNum, ST_UCHAR devType );
#define ADI_DEVICE_4_0_ETH_NUM 3 //4.0װ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ST_RET interact_get_krTimeFlagType( ST_VOID );
ST_UINT interact_get_device_has_eth( ST_INT ethNum );
ST_RET interact_set_device_devaddr( ST_UCHAR devAddr );
ST_RET interact_init_property_io_tremble_time_default( void );
ST_RET interact_set_io_tremble_time( ST_UCHAR dstDev, ST_UCHAR ioType, ST_INT dzNum, ST_INT *dzBuff );
ST_RET interact_init_HSR_addr( ST_VOID );
ST_RET interact_set_HSR_addr(ST_VOID);
ST_RET lb_up_process_init(LB_UP_PROCESS *lb_up_process, ST_INT max_process);
LB_UP_PROCESS * lb_up_process_begin(LB_UP_PROCESS *lb_up_process, ST_INT max_process, ST_INT linkIndex,ST_INT faultIndex,ST_FLOAT lockTimeSpace);
ST_RET lb_up_process_mmap(LB_UP_PROCESS *lb_up_process,ST_CHAR *filename);
ST_RET lb_up_process_end(LB_UP_PROCESS *lb_up_process);
ST_RET interact_srv_conf_handle(ST_VOID);
/************************************************************************/
#ifdef __cplusplus
}
#endif
#endif