|
|
|
|
/****************************************************************************/
|
|
|
|
|
/* Copyright (c) 2007,<2C><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾ */
|
|
|
|
|
/* All rights reserved. */
|
|
|
|
|
/* */
|
|
|
|
|
/* ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
/** <20>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD>Ľӿ<C4BD>
|
|
|
|
|
* @file ac_rpt.c
|
|
|
|
|
* @author yh huiy@xjgc.com */
|
|
|
|
|
/* */
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ע<><D7A2> */
|
|
|
|
|
/* 2009/04/07 DJF <20>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
/* 2007/07/16 YH <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
|
|
|
|
|
/****************************************************************************/
|
|
|
|
|
#ifndef IEC61850_RPT2_INCLUDED
|
|
|
|
|
#define IEC61850_RPT2_INCLUDED
|
|
|
|
|
|
|
|
|
|
#include "glbtypes.h"
|
|
|
|
|
#include "ai_obj.h"
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <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><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><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD>ߵ<EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪDCHG<EFBFBD><EFBFBD>QCHG<EFBFBD><EFBFBD>DUPD<EFBFBD><EFBFBD>GI<EFBFBD><EFBFBD>INTGPD
|
|
|
|
|
*/
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
RPT_REASON_UNKNOWN,
|
|
|
|
|
RPT_REASON_DCHG,
|
|
|
|
|
RPT_REASON_QCHG,
|
|
|
|
|
RPT_REASON_DUPD,
|
|
|
|
|
RPT_REASON_INTGPD,
|
|
|
|
|
RPT_REASON_GI
|
|
|
|
|
} AC_REPORT_REASON;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>津<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>壬<EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><EFBFBD>trgopֵһ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
#define TRG_RESERVED 0x80
|
|
|
|
|
#define TRG_DCHG 0x40
|
|
|
|
|
#define TRG_QCHG 0x20
|
|
|
|
|
#define TRG_DUPD 0x10
|
|
|
|
|
#define TRG_INTGRD 0x08
|
|
|
|
|
#define TRG_GI 0x04
|
|
|
|
|
#define TRG_UNKNOWN 0x02
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* OPTFLDSֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
#define OPT_RESERVED 0x80
|
|
|
|
|
#define OPT_SEQNUM 0x40
|
|
|
|
|
#define OPT_REPORT_TIME_STAMP 0x20
|
|
|
|
|
#define OPT_REASON_FOR_INCLUSION 0x10
|
|
|
|
|
#define OPT_DATA_SET_NAME 0x08
|
|
|
|
|
#define OPT_DATA_REFERENCE 0x04
|
|
|
|
|
#define OPT_BUFFER_OVERFLOW 0x02
|
|
|
|
|
#define OPT_ENTRYID 0x01
|
|
|
|
|
#define OPT_CONF_REVISION 0x8000
|
|
|
|
|
#define OPT_SEGMENTATION 0x4000
|
|
|
|
|
#define OPT_UNKNOWN 0x2000
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <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>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
ST_CHAR *data_ptr; /**< ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>е<EFBFBD>ֵ */
|
|
|
|
|
ST_CHAR *data; /**< <20><><EFBFBD>Ŵӱ<C5B4><D3B1><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
|
|
|
|
ST_INT data_size; /**< ֵռ<D6B5>еĿռ<C4BF><D5BC><EFBFBD>С */
|
|
|
|
|
ST_TIMESTAMP *t; /**< ָ<><D6B8>data<74>е<EFBFBD>t */
|
|
|
|
|
RUNTIME_TYPE *rt; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rt<72><74><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
AI_OBJ_VAL obj_val; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>objVal<61><6C><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ÿ<EFBFBD><C3BF>prim<69><6D>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
|
|
|
|
}AC_RPT_ENTRYDATA;
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>entrydata<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
#define RPT_ENTRYDATA_BUF_NUM 50
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AI_OBJ_ID obj_id;
|
|
|
|
|
ST_TIMESTAMP t;
|
|
|
|
|
}AC_ENTRYDATA_BUF_UNIT;
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AC_ENTRYDATA_BUF_UNIT units[RPT_ENTRYDATA_BUF_NUM];
|
|
|
|
|
ST_INT index;
|
|
|
|
|
}AC_ENTRYDATA_BUF;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
* Ӧ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD>¶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
ST_BOOLEAN init_ok; /**< <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־ */
|
|
|
|
|
ST_CHAR rptID[MAX_IDENT_LEN+1]; /**< RPTID*/
|
|
|
|
|
ST_INT rcb_id; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD>ID*/
|
|
|
|
|
ST_CHAR dsRef[MAX_REFERENCE_LENGTH + 1]; /**< <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD> */
|
|
|
|
|
AI_DS_CTRL *ds; /**< <20><><EFBFBD>ݼ<EFBFBD>ָ<EFBFBD><D6B8>*/
|
|
|
|
|
ST_INT entry_num; /**< <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
AC_RPT_ENTRYDATA *entry_datas; /**< <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>Ա<EFBFBD><D4B1>Ϣ*/
|
|
|
|
|
ST_UCHAR *includebit; /**< <20><><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EBA3AC>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> */
|
|
|
|
|
RUNTIME_TYPE *includebit_rt; /**< includebit<69><74>RUNTIME_TYPEָ<45><D6B8>*/
|
|
|
|
|
ST_INT includebit_TYPEID; /**< includebit<69><74>typeid*/
|
|
|
|
|
AC_ENTRYDATA_BUF entry_buf; /**< <20><><EFBFBD>滺<EFBFBD><E6BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
}AC_RCB_INFO;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <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><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>ָ<EFBFBD><EFBFBD>
|
|
|
|
|
* Ӧ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD>¶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AC_RCB_INFO *rcb_info; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>*/
|
|
|
|
|
ST_INT rcb_num; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
ST_BOOLEAN init_flag; /**< <20>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC>*/
|
|
|
|
|
}AC_IED_RCB_INFO;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ò<EFBFBD>ʱ<EFBFBD>õĽṹ
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
ST_CHAR obj_ref[MAX_REFERENCE_LENGTH + 1];
|
|
|
|
|
ST_RET result;
|
|
|
|
|
ST_INT8 add_cause;
|
|
|
|
|
ST_UINT8 ctrl_num; /**< ctlNumֵ */
|
|
|
|
|
}AC_CTLREPORT_CTRL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
|
|
|
|
|
* @param rcb_info <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<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><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
|
|
|
|
|
* @return ST_VOID <EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
ST_VOID ac_uninit_rpt(AC_IED_RCB_INFO *rcb_info);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
* @param ied srvָ<EFBFBD><EFBFBD>
|
|
|
|
|
* @param rcb_info <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|
|
|
|
* @retval SD_FAILURE ʧ<EFBFBD><EFBFBD>
|
|
|
|
|
* @retval SD_SUCCESS <EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
ST_RET ac_init_rpt(AI_IED_CTRL *ied, AC_IED_RCB_INFO *rcb_info);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern ST_VOID (*u_ac_on_recv_report)(
|
|
|
|
|
VISIBLE_STRING65_TDEF rptID, /**< <20><><EFBFBD><EFBFBD>rptid<69><64>Ӧ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>䵽<EFBFBD>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD><CDBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>*/
|
|
|
|
|
ST_INT obj_num, /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
AI_OBJ_VAL *obj_val, /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
ST_BOOLEAN *val_chgs, /**< ָʾÿ<CABE><C3BF>obj<62><6A>ֵ<EFBFBD>Ƿ<EFBFBD><C7B7>б仯<D0B1><E4BBAF><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>Ľӿ<C4BD>Ҫ<EFBFBD><D2AA><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯*/
|
|
|
|
|
AC_REPORT_REASON *reasons, /**< ָʾ<D6B8><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>*/
|
|
|
|
|
ST_INT srv_id); /**< IEDID*/
|
|
|
|
|
|
|
|
|
|
extern ST_VOID (*u_ac_on_ctl_report)(
|
|
|
|
|
AC_CTLREPORT_CTRL *ctl_rpt_ctrl, /**< <20><><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD>ṹָ<E1B9B9><D6B8>*/
|
|
|
|
|
ST_INT srv_id); /**< IEDID*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif
|