510 lines
16 KiB
C
510 lines
16 KiB
C
|
|
/**
|
|||
|
|
* @file iec103ttylink.h
|
|||
|
|
* @brief IEC61850 <EFBFBD><EFBFBD>rdb <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
|
|||
|
|
*
|
|||
|
|
* @version $Revision: 1.18 $
|
|||
|
|
* @date $Date: 2018/12/29 12:30:29 $
|
|||
|
|
* @author $Author: lizhongming $
|
|||
|
|
* @state $State: Exp $
|
|||
|
|
* @latest $Id: rdb_client.h,v 1.18 2018/12/29 12:30:29 lizhongming Exp $
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef _RDB_CLIENT_H_XSDFSDFSEFS15156SFS
|
|||
|
|
#define _RDB_CLIENT_H_XSDFSDFSEFS15156SFS
|
|||
|
|
|
|||
|
|
#include "interface.h"
|
|||
|
|
#include "ied.h"
|
|||
|
|
#include "node.h"
|
|||
|
|
|
|||
|
|
//lnk20250113<31><33><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD>̨<EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
|
|||
|
|
#include "../json/save2json.h"
|
|||
|
|
#include <stdbool.h>
|
|||
|
|
|
|||
|
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD>Чʱ<D0A7><CAB1><EFBFBD><EFBFBD>ȡֵ
|
|||
|
|
#define FROM_FILE_NAME (0)
|
|||
|
|
#define FROM_SYSTEM (1)
|
|||
|
|
|
|||
|
|
//ͨ<><CDA8><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ŵ<EFBFBD>Ŀ¼
|
|||
|
|
#define GENERAL_PREFIX "0_0"
|
|||
|
|
#define GENERAL_PATH "0_0\\19700101\\00"
|
|||
|
|
|
|||
|
|
//iec report <20><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>״̬
|
|||
|
|
#define VALUE_REACHED (0x01) // ״̬<D7B4><CCAC>ң<EFBFBD><D2A3>ֵ<EFBFBD><D6B5><EFBFBD>յ<EFBFBD>
|
|||
|
|
#define Q_REACHED (0x02) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
|
|||
|
|
#define T_REACHED (0x04) // ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
|
|||
|
|
#define REASON_REACHED (0x08) // <20><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
|
|||
|
|
|
|||
|
|
//CHANNELSTATE macro defines
|
|||
|
|
#define CHANNEL_CONNECTING (0x01) //
|
|||
|
|
#define CHANNEL_CONNECTED (0x02) //
|
|||
|
|
#define CHANNEL_DISCONNECTING (0x03) //
|
|||
|
|
#define CHANNEL_DISCONNECTED (0x04) //
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define RELAY_SELECT (0x01) //
|
|||
|
|
#define RELAY_RUN (0x02) //
|
|||
|
|
#define RELAY_CANCEL (0x03) //
|
|||
|
|
|
|||
|
|
#define MIN_INIT_NUM (10) //<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>ٻ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define NEXT_CONNECT_TIME (10000) //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10*1000=10s
|
|||
|
|
|
|||
|
|
#define MAX_SAME_FCDNAME_OBJECTS (500) // for <20><><EFBFBD><EFBFBD>PQװ<51>ã<EFBFBD><C3A3>ij<EFBFBD>64 2016-5-10 //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>FCD<43>ֳɶ<D6B3><C9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD> <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> ACT<43><54><EFBFBD>ֳ<F3A3ACB7>general<61><6C>phsa<73><61>b<EFBFBD><62>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
/** ======================<3D>㽭<EFBFBD>涼<EFBFBD><E6B6BC>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>չͬ<D5B9>ڹ<EFBFBD><DAB9><EFBFBD>============================ */
|
|||
|
|
/*
|
|||
|
|
16:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>բ
|
|||
|
|
17:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ں<EFBFBD>բ
|
|||
|
|
18:<EFBFBD><EFBFBD>ͬ<EFBFBD>ں<EFBFBD>բ
|
|||
|
|
19:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>բ
|
|||
|
|
CHECK_BY_SETTING CHECK_U <EFBFBD><EFBFBD>Ӧ˳<EFBFBD><EFBFBD>Ʊͬ<EFBFBD><EFBFBD>ң<EFBFBD>ص<EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><EFBFBD>ң<EFBFBD>ص<EFBFBD>
|
|||
|
|
CHECK_NOTHING CHECK_SYN <EFBFBD><EFBFBD>Ӧ˳<EFBFBD><EFBFBD>Ʊͬ<EFBFBD><EFBFBD>ң<EFBFBD>ص<EFBFBD><EFBFBD>ĵڶ<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>ص<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
#define CHECK_START_QU 16
|
|||
|
|
#define CHECK_BY_SETTING 0
|
|||
|
|
#define CHECK_NOTHING 1
|
|||
|
|
#define CHECK_SYN 2
|
|||
|
|
#define CHECK_U 3
|
|||
|
|
|
|||
|
|
#define DEFAULT_EDIT_FXDAREANO (0x80FE) /**< Ĭ<>ϱ༭<CFB1><E0BCAD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
|||
|
|
#define FIXED_AREA_GRP_DOT2_EDIT_AREA (2) /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>-><3E>༭<EFBFBD><E0BCAD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
|||
|
|
|
|||
|
|
extern unsigned int g_node_id;
|
|||
|
|
|
|||
|
|
typedef struct element_usr_t element_usr_t;
|
|||
|
|
typedef struct rptinfo_t rptinfo_t;
|
|||
|
|
typedef struct loginfo_t loginfo_t;
|
|||
|
|
typedef struct LD_info_t LD_info_t;
|
|||
|
|
typedef struct ied_usr_t ied_usr_t;
|
|||
|
|
typedef struct chnl_usr_t chnl_usr_t;
|
|||
|
|
typedef struct autorecall_t autorecall_t;
|
|||
|
|
|
|||
|
|
typedef struct ied_info_t ied_info_t;
|
|||
|
|
//////////////////////////////////////////////////////////
|
|||
|
|
struct autorecall_t {
|
|||
|
|
long long start;
|
|||
|
|
long long end;
|
|||
|
|
int need_steady; //lnk20241030<33><30><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC>̬<EFBFBD><CCAC>־
|
|||
|
|
int need_voltage;
|
|||
|
|
};
|
|||
|
|
//////////////////////////////////////////////////////////
|
|||
|
|
struct ied_info_t{
|
|||
|
|
char time[50][20];
|
|||
|
|
unsigned char name[50][128];
|
|||
|
|
char value[50][20];
|
|||
|
|
};
|
|||
|
|
//lnk20250113<31><33><EFBFBD><EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>½ṹ///////////////////////////////
|
|||
|
|
#define MAX_UPDATEA_NUM 300
|
|||
|
|
typedef struct trigger_update_xml_t trigger_update_xml_t;
|
|||
|
|
struct trigger_update_xml_t{
|
|||
|
|
int work_update_num;
|
|||
|
|
int new_update_num;
|
|||
|
|
int delete_update_num;
|
|||
|
|
int modify_update_num;
|
|||
|
|
terminal work_updates[MAX_UPDATEA_NUM];
|
|||
|
|
terminal new_updates[MAX_UPDATEA_NUM];
|
|||
|
|
terminal delete_updates[MAX_UPDATEA_NUM];
|
|||
|
|
terminal modify_updates[MAX_UPDATEA_NUM];
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////
|
|||
|
|
#define MAX_TRIGGER_NUM 300
|
|||
|
|
typedef struct trigger_t trigger_t;
|
|||
|
|
struct trigger_t{
|
|||
|
|
int dev_idx;
|
|||
|
|
int line_id;
|
|||
|
|
int real_data;
|
|||
|
|
int soe_data;
|
|||
|
|
int limit;
|
|||
|
|
int count;
|
|||
|
|
};
|
|||
|
|
typedef struct trigger_3s_xml_t trigger_3s_xml_t;
|
|||
|
|
struct trigger_3s_xml_t{
|
|||
|
|
int work_trigger_num;
|
|||
|
|
int new_trigger_num;
|
|||
|
|
int delete_trigger_num;
|
|||
|
|
int modify_trigger_num;
|
|||
|
|
trigger_t work_triggers[MAX_TRIGGER_NUM];
|
|||
|
|
trigger_t new_triggers[MAX_TRIGGER_NUM];
|
|||
|
|
trigger_t delete_triggers[MAX_TRIGGER_NUM];
|
|||
|
|
trigger_t modify_triggers[MAX_TRIGGER_NUM];
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/////////////////////////////////
|
|||
|
|
#define MAX_RECALL_NUM 300
|
|||
|
|
typedef struct recall_t recall_t;
|
|||
|
|
struct recall_t{
|
|||
|
|
char* line_id;
|
|||
|
|
long long start_time; //<2F><><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>־<EFBFBD><D6BE>ʼʱ<CABC><CAB1>
|
|||
|
|
long long end_time; //<2F><><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
int need_steady;
|
|||
|
|
int need_voltage;
|
|||
|
|
};
|
|||
|
|
typedef struct recall_xml_t recall_xml_t;
|
|||
|
|
struct recall_xml_t{
|
|||
|
|
int work_recall_num;
|
|||
|
|
int new_recall_num;
|
|||
|
|
recall_t work_recalls[MAX_RECALL_NUM];
|
|||
|
|
recall_t new_recalls[MAX_RECALL_NUM];
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////
|
|||
|
|
struct element_usr_t{
|
|||
|
|
char* FCD_ref;
|
|||
|
|
char* FCDA_ref;
|
|||
|
|
char* Full_FCDA_ref;
|
|||
|
|
|
|||
|
|
double m_v;
|
|||
|
|
char q[14]; //q use 13 bits
|
|||
|
|
systime_t tm;
|
|||
|
|
char reason[7]; // reserve 1 bit, use 5 bits
|
|||
|
|
uint32_t DataStatus;
|
|||
|
|
|
|||
|
|
int m_num_same_FCD_Objects;
|
|||
|
|
// element_t* m_pSameFCDObjects[MAX_SAME_FCDNAME_OBJECTS];
|
|||
|
|
|
|||
|
|
int num_same_FCDA_Objects;
|
|||
|
|
// element_t* pSame_FCDA_Objects[MAX_SAME_FCDNAME_OBJECTS];
|
|||
|
|
|
|||
|
|
byte_t is_phase_soe;
|
|||
|
|
byte_t last_soe_status;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct rptinfo_t{
|
|||
|
|
char* rptID;
|
|||
|
|
byte_t instanceNeedSuffix; //ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Ӻ<EFBFBD>
|
|||
|
|
byte_t TrgOpt;
|
|||
|
|
byte_t OptFlds [2]; /* 10 bit bitstring but only allow write of 9 bits*/
|
|||
|
|
uint32_t IntgPd; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨<EFBFBD>룩
|
|||
|
|
int report_PQ_type; //<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ͳ<EFBFBD>ơ<EFBFBD>ʵʱ<CAB5><CAB1>soe<6F><65><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>͵<EFBFBD>
|
|||
|
|
|
|||
|
|
LD_info_t* LD_info;
|
|||
|
|
|
|||
|
|
int rpt_registered; //<2F>Ƿ<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
byte_t chnl_id; //<2F><><EFBFBD><EFBFBD>δע<CEB4>ᣬ<EFBFBD>´<EFBFBD><C2B4><EFBFBD>ͼע<CDBC>ᱨ<EFBFBD><E1B1A8><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ᣬ<EFBFBD><E1A3AC><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD>ע<EFBFBD>ᱨ<EFBFBD><E1B1A8><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
RCB_INFO * m_rcb_info;
|
|||
|
|
double m_LastDataTime; //<2F>ϴ<EFBFBD><CFB4>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
double m_LastGITime; //<2F>ϴ<EFBFBD>GI<47><49>ʱ<EFBFBD><CAB1>
|
|||
|
|
double m_LastRegisterFailedTime; //<2F>ϴ<EFBFBD>ע<EFBFBD><D7A2>ʧ<EFBFBD>ܵ<EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
double m_LastUnRegisterFailedTime; //<2F>ϴ<EFBFBD>ȡ<EFBFBD><C8A1>ע<EFBFBD><D7A2>ʧ<EFBFBD>ܵ<EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
byte_t m_EntryID[8];
|
|||
|
|
int m_curRptSuffix;
|
|||
|
|
int count; //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ<DDB5><C4B4><EFBFBD>
|
|||
|
|
int rptNo;//CZY 2023-08-17 WW 2022-11-14<31><34><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
|||
|
|
int flickerflag;//CZY 2023-08-17 WW 2022-11-14<31><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
|
|||
|
|
int pstflag;//CZY 2023-08-17 WW 2022-11-14<31><34><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct loginfo_t{
|
|||
|
|
char* lcbName;
|
|||
|
|
char* datasetName;
|
|||
|
|
char logName[32];
|
|||
|
|
uint32_t IntgPd; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣨<EFBFBD>룩
|
|||
|
|
byte_t reasonCode;
|
|||
|
|
byte_t TrgOpt;
|
|||
|
|
|
|||
|
|
LD_info_t* LD_info;
|
|||
|
|
//LCB_INFO * m_lcb_info;
|
|||
|
|
apr_time_t start_time; //<2F><><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>־<EFBFBD><D6BE>ʼʱ<CABC><CAB1>
|
|||
|
|
apr_time_t end_time; //<2F><><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
//double last_checktime;
|
|||
|
|
int need_steady;
|
|||
|
|
int need_voltage;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#define QVVR_NUM (256)
|
|||
|
|
|
|||
|
|
#define QVVR_DATA_NOT_USED (0)
|
|||
|
|
#define QVVR_DATA_RECEIVED (1)
|
|||
|
|
#define QVVR_DATA_PAIRED (2)
|
|||
|
|
|
|||
|
|
typedef struct QVVR_t QVVR_t;
|
|||
|
|
struct QVVR_t{
|
|||
|
|
int used_status;
|
|||
|
|
int QVVR_start;
|
|||
|
|
int QVVR_type;
|
|||
|
|
long long QVVR_time;
|
|||
|
|
float QVVR_PerTime;
|
|||
|
|
float QVVR_Amg;
|
|||
|
|
char QVVR_Rptname[128];
|
|||
|
|
|
|||
|
|
uint32_t timestamp;
|
|||
|
|
};
|
|||
|
|
struct LD_info_t{
|
|||
|
|
char name[256];
|
|||
|
|
ied_t *ied;
|
|||
|
|
byte_t cpuno;
|
|||
|
|
char *LD_name;
|
|||
|
|
apr_hash_t *ht_fcd; /**< FCD object hash<73><68><EFBFBD><EFBFBD> <20><> element */
|
|||
|
|
apr_hash_t *ht_full_fcda; /**< <20><><EFBFBD><EFBFBD>FCDA object hash<73><68><EFBFBD><EFBFBD> <20><> element */
|
|||
|
|
int rptcount; /**< report <20><><EFBFBD><EFBFBD> */
|
|||
|
|
rptinfo_t **rptinfo; /**< rptinfo_t* <20><><EFBFBD><EFBFBD> */
|
|||
|
|
int read_flag ; //CZY 2023-02-28 <20>ж<EFBFBD><D0B6>Ƿ<C7B7><F1BDABBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
|
|||
|
|
|
|||
|
|
char mp_id[256];//CZY 2023-08-20 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD>8afaa
|
|||
|
|
char terminal_code[256];//CZY 2023-08-20 <20>ն˱<D5B6><CBB1><EFBFBD>
|
|||
|
|
//int ld_ins;//CZY 2023-08-20 <20><EFBFBD><DFBC>豸ʵ<E8B1B8><CAB5><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>1
|
|||
|
|
char voltage_level[256];//CZY 2023-08-20 <20><>ѹ<EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30
|
|||
|
|
char v_wiring_type[256];//CZY 2023-08-20 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>߷<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>01-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>02-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
long long time; //CZY 2023-08-20 ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>) ̨<>˸<EFBFBD><CBB8><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>1691656669
|
|||
|
|
int update_flag;//CZY 2023-08-20 ̨<>˸<EFBFBD><CBB8>±<EFBFBD>־ 0:keep 2:delete 4:update 8:add
|
|||
|
|
char monitor_status[64]; //lnk20241031<33><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
int rptRecvFlag;//CZY 2023-08-17 WW 2022-11-14<31>жϱ<D0B6><CFB1><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>,rptRecvFlag=<3D><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int rptRecvCheckFlag;//CZY 2023-08-17 WW 2022-11-14<31>жϱ<D0B6><CFB1><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>,ÿ<><C3BF><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rptRecvFlagһ<67><D2BB><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int rptPstRecvFlag;//CZY 2023-08-17 WW 2022-11-14<31>жϱ<D0B6><CFB1><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>,rptRecvFlag=<3D><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int rptPstRecvCheckFlag;//CZY 2023-08-17 WW 2022-11-14<31>жϱ<D0B6><CFB1><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>,ÿ<><C3BF><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rptRecvFlagһ<67><D2BB><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
//<2F><>ʹ<EFBFBD><CAB9>
|
|||
|
|
int iUnitOfTime;//CZY 2023-08-17 WW 2022<32><32>12<31><32>7<EFBFBD><37>15:43:34 װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䵥λ<E4B5A5>л<EFBFBD>(0-ms; 1-s)
|
|||
|
|
int iStatOfTime;//CZY 2023-08-17 WW 2022<32><32>12<31><32>7<EFBFBD><37>15:48:33 ͳ<><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 0-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 1-UTCʱ<43><CAB1>
|
|||
|
|
int iJournalTime;//CZY 2023-08-17 WW 2022<32><32>12<31><32>7<EFBFBD><37>15:52:32 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ʱ<D6BE><CAB1>(0-UTCʱ<43><CAB1>(<28><>־<EFBFBD><D6BE>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ΪUTCʱ<43><CAB1>); 1-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD>䡢¼<E4A1A2><C2BC><EFBFBD>ļ<EFBFBD>UTCʱ<43><CAB1> ע<><D7A2><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>+8Сʱ<D0A1><CAB1>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־))
|
|||
|
|
//<2F><>ʹ<EFBFBD><CAB9>
|
|||
|
|
//<2F><>־
|
|||
|
|
int logcount; /**< log <20><><EFBFBD><EFBFBD> */
|
|||
|
|
loginfo_t **loginfo; /**< loginfo_t* <20><><EFBFBD><EFBFBD> */
|
|||
|
|
//<2F><>־
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
int autorecallflag;
|
|||
|
|
int autorecallcount;
|
|||
|
|
autorecall_t **autorecall;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
//<2F><>ʹ<EFBFBD><CAB9>
|
|||
|
|
uint32_t group; //add by rzx
|
|||
|
|
//<2F><>ʹ<EFBFBD><CAB9>
|
|||
|
|
//ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
int line_id;
|
|||
|
|
//ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
//¼<><C2BC>
|
|||
|
|
int FltNum[256];
|
|||
|
|
//¼<><C2BC>
|
|||
|
|
//ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
int real_data;
|
|||
|
|
int soe_data;
|
|||
|
|
int limit;
|
|||
|
|
int count;
|
|||
|
|
//ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
//<2F><>ʹ<EFBFBD><CAB9>
|
|||
|
|
int SubV_Index;
|
|||
|
|
int Dev_Index;
|
|||
|
|
int Sub_Index;
|
|||
|
|
int GD_Index;
|
|||
|
|
//<2F><>ʹ<EFBFBD><CAB9>
|
|||
|
|
//process QVVR
|
|||
|
|
QVVR_t qvvr[QVVR_NUM];
|
|||
|
|
int qvvr_idx;
|
|||
|
|
//<2F><>̬
|
|||
|
|
//process RDRE
|
|||
|
|
int RDRE_FltNum;
|
|||
|
|
//¼<><C2BC>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct ied_usr_t{
|
|||
|
|
LD_info_t *LD_info; /**< LD<4C><44><EFBFBD><EFBFBD> */
|
|||
|
|
int dev_idx; /**< <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> */
|
|||
|
|
char dev_type[256]; /**< <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> */
|
|||
|
|
char dev_key[256]; /**< <20>豸<EFBFBD><E8B1B8>Կ */
|
|||
|
|
char dev_series[256]; /**< <20>豸ʶ<E8B1B8><CAB6><EFBFBD><EFBFBD> */
|
|||
|
|
int dev_flag; /**< <20>豸<EFBFBD><E8B1B8>־ */
|
|||
|
|
void *cookie;
|
|||
|
|
double last_call_wavelist_time ; //<2F>ϴ<EFBFBD><CFB4><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>б<EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|
|||
|
|
char terminal_id[256];//CZY 2023-08-20 <20>ն<EFBFBD>id<69><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8afaa9a15707483a0157262f8e78077d
|
|||
|
|
char org_name[256];//CZY 2023-08-20 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD><EFBFBD><EFBFBD>˾
|
|||
|
|
char maint_name[256];//CZY 2023-08-20 <20><>ά<EFBFBD><CEAC>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD><EFBFBD><EFBFBD>˾
|
|||
|
|
char station_name[256];//CZY 2023-08-20 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><D5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>220kV<6B><56>̨ɽ<CCA8><C9BD>
|
|||
|
|
char tmnl_factory[256];//CZY 2023-08-20 <20>ն˳<D5B6><CBB3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD><CFBE>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD>˾
|
|||
|
|
long long time; //CZY 2023-08-20 ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>) ̨<>˸<EFBFBD><CBB8><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>1691656669
|
|||
|
|
char tmnl_status[256];//CZY 2023-08-30 <20><><EFBFBD><EFBFBD>״̬
|
|||
|
|
char terminal_code[256];//CZY 2023-08-30 <20>ն˱<D5B6><CBB1><EFBFBD>
|
|||
|
|
int update_flag;//CZY 2023-08-20 ̨<>˸<EFBFBD><CBB8>±<EFBFBD>־ 0:keep 2:delete 4:update 8:add
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
struct chnl_usr_t{
|
|||
|
|
byte_t chnl_id;
|
|||
|
|
char ip_str[20];
|
|||
|
|
channel_t *chnl; /**< <20><>Ӧ<EFBFBD><D3A6>channel ָ<><D6B8> */
|
|||
|
|
MVL_NET_INFO *net_info;
|
|||
|
|
MVL_REQ_PEND *m_reqCtrl; //MVL_REQ_PEND
|
|||
|
|
|
|||
|
|
int m_state;
|
|||
|
|
double m_StartConnectingTime; //<2F><><EFBFBD>ο<EFBFBD>ʼ connect <20><>ʱ<EFBFBD><CAB1>
|
|||
|
|
double m_StartDisconnectingTime; //<2F><><EFBFBD>ο<EFBFBD>ʼ disconnect <20><>ʱ<EFBFBD><CAB1>
|
|||
|
|
double m_ClosedMsTime; //<2F>ϴ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
double m_LastPosRespTime; //<2F>ϴο϶<CEBF><CFB6><EFBFBD>Ӧ<EFBFBD><D3A6>ʱ<EFBFBD><CAB1>
|
|||
|
|
int m_NegRespTimes; // <20>ۼƷ<DBBC><C6B7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
typedef struct pt61850app_t pt61850app_t;
|
|||
|
|
struct pt61850app_t
|
|||
|
|
{
|
|||
|
|
// rdb_t *rdb;
|
|||
|
|
node_t *node;
|
|||
|
|
// driver_t *driver;
|
|||
|
|
//byte_t IsMaster; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
|
|||
|
|
////////////////////////////
|
|||
|
|
uint32_t mmsOpTimeout; //mms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ȵĽ<C8B5><C4BD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>
|
|||
|
|
//uint32_t relayTimeout; //ң<>صȴ<D8B5>ң<EFBFBD>ŷ<EFBFBD><C5B7>صij<D8B5>ʱʱ<CAB1><CAB1>
|
|||
|
|
uint32_t giTime; //<2F>ܲ<EFBFBD>ѯʱ<D1AF><CAB1>
|
|||
|
|
int rptSuffix[2][2]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD>
|
|||
|
|
//char ftp_srv_ip[16];
|
|||
|
|
//char ftpsrv_path[64];
|
|||
|
|
//char ftp_user[32];
|
|||
|
|
//char ftp_password[32];
|
|||
|
|
char accPath[65]; //װ<><D7B0>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
|||
|
|
//char RcdMadeAddStr[65]; //¼<><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>ŵ<EFBFBD>ַ
|
|||
|
|
//uint8_t change_file_name; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><DEB8>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
uint32_t chnl_counts;
|
|||
|
|
chnl_usr_t **chnl_usr;
|
|||
|
|
apr_pool_t *tmp_pool; // <20><>ʱpool
|
|||
|
|
//<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>ٻ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>ó<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>ٻ<EFBFBD><D9BB>ļ<EFBFBD>
|
|||
|
|
uint8_t initNum;
|
|||
|
|
//<2F>ٻ<EFBFBD><D9BB>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ͣ<EFBFBD>Ϊ0<CEAA><30>ֻ<EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>ӦĿ¼<C4BF>µ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϊ1<CEAA><31><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>ӦĿ¼<C4BF>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ
|
|||
|
|
//uint8_t call_file_type;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ч
|
|||
|
|
uint8_t check_dgtVal;//0<><30><EFBFBD>У<EFBFBD><D0A3><EFBFBD>0<EFBFBD><30>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
extern uint8_t set_mx_q;
|
|||
|
|
|
|||
|
|
#ifdef _OS_WIN32_
|
|||
|
|
#pragma pack(push,1)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
#ifdef _OS_WIN32_
|
|||
|
|
#pragma pack(pop)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#ifdef __cplusplus
|
|||
|
|
extern "C" {
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
char* str_trim_both(char* temp,const char* pattern) ;
|
|||
|
|
|
|||
|
|
element_usr_t* GET_DOTEXT_ADDR(element_t *elem);
|
|||
|
|
|
|||
|
|
ied_usr_t* GET_IEDEXT_ADDR(ied_t *ied);
|
|||
|
|
|
|||
|
|
ST_RET mms_jread (loginfo_t *loginfo,MVL_NET_INFO *clientNetInfo, ST_CHAR *dom_name,ST_CHAR *logName, apr_time_t start_time,apr_time_t end_time,ST_INT iTimeout, ST_CHAR* ip) ;
|
|||
|
|
|
|||
|
|
LD_info_t* find_LD_from_cpuId(ied_t* ied,byte_t cpuId);
|
|||
|
|
LD_info_t* find_LD_from_IEDLDName(ied_t* ied, char *IEDLDName);
|
|||
|
|
LD_info_t* find_LD_from_cpuCount_and_LEDRs(ied_t* ied, byte_t cpuCount);
|
|||
|
|
|
|||
|
|
LD_info_t* find_LD_from_IEDLDName_in_report(ied_t* ied, char *IEDLDName);
|
|||
|
|
|
|||
|
|
LD_info_t* find_LD_from_element(element_t* elem);
|
|||
|
|
|
|||
|
|
rptinfo_t* find_rptinfo_from_net_rcb_info(MVL_NET_INFO *net_info,RCB_INFO *rcb_info);
|
|||
|
|
|
|||
|
|
rptinfo_t* find_rptinfo_from_net_rpt_info_name(MVL_NET_INFO *net_info, RCB_INFO *rcb_info);
|
|||
|
|
|
|||
|
|
void get_rpt_inst_name(rptinfo_t *rptinfo, char * rpt_inst_name );
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>rdb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> APR_SUCCESS
|
|||
|
|
*/
|
|||
|
|
apr_status_t init_rdb();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
|
|||
|
|
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> APR_SUCCESS
|
|||
|
|
*/
|
|||
|
|
apr_status_t run_protocol();
|
|||
|
|
|
|||
|
|
void Set_val_from_61850rpt(element_t* elem,double v);
|
|||
|
|
int Set_q_from_61850rpt(char* q);
|
|||
|
|
|
|||
|
|
apr_status_t init_rem_dib_table();
|
|||
|
|
|
|||
|
|
void CheckNextNotConnectedChannel();
|
|||
|
|
//WW 2023-08-22
|
|||
|
|
int HandleReceiveMessage(int socketClient, char buffer[256]);
|
|||
|
|
int ExecuteWebCommand(LD_info_t *LD_info, int iType);
|
|||
|
|
int SendMessageToWeb(int socketClient, int iErrorCode); //<2F><>Web Socket<65>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
//WW 2023-08-22 end
|
|||
|
|
void CheckAllConnectedChannel() ;
|
|||
|
|
|
|||
|
|
void check_3s_config();
|
|||
|
|
void check_recall_config();
|
|||
|
|
void create_recall_xml();
|
|||
|
|
void check_disk_quota();
|
|||
|
|
|
|||
|
|
apr_status_t prepare_call_cn_wavelist(LD_info_t *LD_info, int FltNum );
|
|||
|
|
|
|||
|
|
apr_status_t call_cn_wavelist(LD_info_t *LD_info);
|
|||
|
|
|
|||
|
|
void strip_file_name_tail_to_ms(char *fileName);
|
|||
|
|
|
|||
|
|
//////////for pq //////////////////////////////////////////
|
|||
|
|
|
|||
|
|
ied_t* find_ied_from_dev_idx(int dev_idx);
|
|||
|
|
ied_t* find_ied_from_dev_code(char dev_idx[]);
|
|||
|
|
|
|||
|
|
LD_info_t* find_LD_info_from_line_id(ied_t* ied, int line_id);
|
|||
|
|
LD_info_t* find_LD_info_only_from_line_id(int line_id);
|
|||
|
|
LD_info_t* find_LD_info_from_mp_id(ied_t* ied, char* mp_id);
|
|||
|
|
LD_info_t* find_LD_info_only_from_mp_id(char* mp_id);
|
|||
|
|
|
|||
|
|
////////////////////////////////lnk20250115
|
|||
|
|
int parse_ledger_update_xml(trigger_update_xml_t* trigger_update_xml);
|
|||
|
|
extern const int MAX_CPUNO;
|
|||
|
|
extern int stringToInt(const char* str, int* result);
|
|||
|
|
extern bool isCharPtrEmpty(const char* str);
|
|||
|
|
extern int parse_ledger_update_xml(trigger_update_xml_t* trigger_update_xml);
|
|||
|
|
extern int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_index);
|
|||
|
|
extern void print_trigger_update_xml(const trigger_update_xml_t* trigger_update);
|
|||
|
|
////////////////////////////////
|
|||
|
|
int parse_3s_xml(trigger_3s_xml_t* trigger_3s_xml);
|
|||
|
|
int create_3s_xml(trigger_3s_xml_t* trigger_3s_xml);
|
|||
|
|
int get_real_report_count(LD_info_t *LD_info);
|
|||
|
|
|
|||
|
|
int delete_recall_xml(char* id);
|
|||
|
|
int parse_recall_xml(recall_xml_t* recall_xml,char *id);
|
|||
|
|
void process_recall_config(recall_xml_t* recall_xml);
|
|||
|
|
int remove_recall_xml();
|
|||
|
|
|
|||
|
|
int init_rptctrl_by_count(LD_info_t* LD_info,int rptcount);
|
|||
|
|
int fill_rptctrl_by_cfg(LD_info_t* LD_info,int rptno,char *buf);
|
|||
|
|
int init_logctrl_by_count(LD_info_t* LD_info,int logcount);
|
|||
|
|
int fill_logctrl_by_cfg(LD_info_t* LD_info,int logno,char *buf,char* devtype);
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////
|
|||
|
|
void processQVVR_start(LD_info_t* LD_info);
|
|||
|
|
void processQVVR_time(LD_info_t* LD_info, long long Time);
|
|||
|
|
void processQVVR_data(LD_info_t* LD_info,char* FULL_FCDA_Name,double v);
|
|||
|
|
void processQVVR_end(LD_info_t* LD_info);
|
|||
|
|
|
|||
|
|
void processRDRE_start(LD_info_t* LD_info);
|
|||
|
|
void processRDRE_data(LD_info_t* LD_info,char* FULL_FCDA_Name,double v);
|
|||
|
|
void processRDRE_end(LD_info_t* LD_info);
|
|||
|
|
|
|||
|
|
int extract_timestamp_from_cfg_file(char *comtrade_fn,long long *start_tm,long long *trig_tm);
|
|||
|
|
|
|||
|
|
int parse_file_names(char *file_match_str,char **filenames,int filenum,int *cfg_idx,int *dat_idx,char *file_base_name,char *file_yyyymm);
|
|||
|
|
|
|||
|
|
int parse_file_names_by_fltnum(int fltnum, char* domname, char** filenames, int filenum, int* cfg_idx, int* dat_idx, char* file_base_name, char* file_yyyymm);
|
|||
|
|
QVVR_t* find_qvvr_by_trig_tm(LD_info_t* LD_info,long long trig_tm);
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
#ifdef __cplusplus
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#endif /* _RDB_CLIENT_H_XSDFSDFSEFS15156SFS */
|