|
|
|
|
/****************************************************************************/
|
|
|
|
|
/* Copyright (c) 2007,<2C><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾ */
|
|
|
|
|
/* All rights reserved. */
|
|
|
|
|
/* */
|
|
|
|
|
/* ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
/** <20><><EFBFBD><EFBFBD>ģ<EFBFBD>Ͷ<EFBFBD><CDB6>壬<EFBFBD><E5A3AC><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|
|
|
|
* @file ai_obj.h */
|
|
|
|
|
/* */
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ע<><D7A2> */
|
|
|
|
|
/* 2007/07/16 DJF <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
|
|
|
|
|
/****************************************************************************/
|
|
|
|
|
#ifndef IEC61850_AI_OBJ_INCLUDED
|
|
|
|
|
#define IEC61850_AI_OBJ_INCLUDED
|
|
|
|
|
|
|
|
|
|
#include "glbtypes.h"
|
|
|
|
|
#include "scl.h"
|
|
|
|
|
#include "mvl_defs.h"
|
|
|
|
|
#include "mms_mp.h"
|
|
|
|
|
#include "ai_def.h"
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define AI_MAX_AA_DS_NUM 20 /**< ÿ<><C3BF>ied<65><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AA_SPEC<45>ռ<EFBFBD><D5BC><EFBFBD>ds<64><73><EFBFBD><EFBFBD> */
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct ai_common_obj
|
|
|
|
|
{
|
|
|
|
|
ST_CHAR name[MAX_IDENT_LEN+1];
|
|
|
|
|
ST_CHAR desc[MAX_IDENT_LEN+1];
|
|
|
|
|
AI_OBJ_TYPE type;
|
|
|
|
|
ST_INT id;
|
|
|
|
|
struct ai_common_obj *parent;
|
|
|
|
|
}AI_COMMON_OBJ;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AI_COMMON_OBJ cobj;
|
|
|
|
|
|
|
|
|
|
ST_INT mb_num;
|
|
|
|
|
ST_INT *mb_ids;
|
|
|
|
|
AI_OBJ_REF *mb_refs;
|
|
|
|
|
ST_BOOLEAN deletable;
|
|
|
|
|
}AI_DS_CTRL;
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
ST_CHAR do_name[MAX_IDENT_LEN+1]; //do<64><6F><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6>do<64><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>do$sdo
|
|
|
|
|
ST_CHAR desc[MAX_IDENT_LEN+1]; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
}AI_DO_DESC;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ln<EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AI_COMMON_OBJ cobj;
|
|
|
|
|
|
|
|
|
|
ST_INT type_id;
|
|
|
|
|
ST_VOID *data;
|
|
|
|
|
|
|
|
|
|
ST_INT sub_obj_num;
|
|
|
|
|
ST_INT *sub_ids;
|
|
|
|
|
|
|
|
|
|
ST_INT do_desc_num;
|
|
|
|
|
AI_DO_DESC *do_descs;
|
|
|
|
|
|
|
|
|
|
}AI_LN_CTRL;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ld<EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AI_COMMON_OBJ cobj;
|
|
|
|
|
|
|
|
|
|
ST_INT max_num_ds;
|
|
|
|
|
ST_INT num_ds;
|
|
|
|
|
AI_DS_CTRL **ds_tbl; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ds
|
|
|
|
|
|
|
|
|
|
ST_INT max_num_ln;
|
|
|
|
|
ST_INT num_ln;
|
|
|
|
|
AI_LN_CTRL **ln_tbl;
|
|
|
|
|
}AI_LD_CTRL;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fco IDCTRL<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AI_FCO_SUBTYPE type; /**< <20><>ϸdo<64><6F>da<64><61>ln<6C><6E><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>AI_LNTYPE_PTOC AI_DOTYPE_SPS AI_DATYPE_BOOLEAN<41><4E> */
|
|
|
|
|
RUNTIME_TYPE *rt;
|
|
|
|
|
AI_LN_CTRL *ln;/**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ln */
|
|
|
|
|
}AI_FCO_IDCTRL;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ln IDCTRL<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AI_FCO_SUBTYPE type; //ln<6C><6E><EFBFBD><EFBFBD> <20><>LLN0 LPHD PTOC<4F><43>
|
|
|
|
|
AI_LN_CTRL *ln;
|
|
|
|
|
}AI_LN_IDCTRL;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ld IDCTRL<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AI_LD_CTRL *ld;
|
|
|
|
|
}AI_LD_IDCTRL;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ds IDCTRL<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AI_DS_CTRL *ds;
|
|
|
|
|
}AI_DS_IDCTRL;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ied IDCTRL<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
struct ai_ied_ctrl *ied;
|
|
|
|
|
}AI_IED_IDCTRL;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* objid_ctrl<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
AI_OBJ_TYPE obj_type; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
union
|
|
|
|
|
{
|
|
|
|
|
AI_FCO_IDCTRL fco_idctrl; /**< fcn fcd fcda<64><61><EFBFBD><EFBFBD>id<69><64><EFBFBD><EFBFBD> */
|
|
|
|
|
AI_DS_IDCTRL ds_idctrl; /**< <20><><EFBFBD>ݼ<EFBFBD><DDBC>Ķ<EFBFBD><C4B6><EFBFBD>id<69><64><EFBFBD><EFBFBD> */
|
|
|
|
|
AI_LD_IDCTRL ld_idctrl; /**< LD<4C>Ķ<EFBFBD><C4B6><EFBFBD>id<69><64><EFBFBD><EFBFBD> */
|
|
|
|
|
AI_LN_IDCTRL ln_idctrl; /**< LN<4C>Ķ<EFBFBD><C4B6><EFBFBD>id<69><64><EFBFBD><EFBFBD> */
|
|
|
|
|
AI_IED_IDCTRL ied_idctrl; /**< IED<45>Ķ<EFBFBD><C4B6><EFBFBD>id<69><64><EFBFBD><EFBFBD> */
|
|
|
|
|
}u;
|
|
|
|
|
ST_VOID *user_info; /**< Ӧ<>ò㱣<C3B2><E3B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ */
|
|
|
|
|
}AI_OBJ_IDCTRL;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ied <EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
typedef struct ai_ied_ctrl
|
|
|
|
|
{
|
|
|
|
|
AI_COMMON_OBJ cobj;
|
|
|
|
|
|
|
|
|
|
ST_INT max_num_ld;
|
|
|
|
|
ST_INT num_ld;
|
|
|
|
|
AI_LD_CTRL **ld_tbl;
|
|
|
|
|
|
|
|
|
|
ST_INT max_aa_ds; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ds<64>ĸ<EFBFBD><C4B8><EFBFBD>*/
|
|
|
|
|
ST_INT num_aa_ds;
|
|
|
|
|
AI_DS_CTRL **aa_ds_tbl; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dataset */
|
|
|
|
|
|
|
|
|
|
ST_INT obj_num; /**< ied<65>µľ<C2B5>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
ST_INT max_dyn_num; /**< <20><><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD>Ķ<EFBFBD>̬ds<64>ĸ<EFBFBD><C4B8><EFBFBD> */
|
|
|
|
|
AI_OBJ_IDCTRL *id_ctrl; /**< <20><><EFBFBD>飬<EFBFBD><E9A3AC>СΪobj_num+max_dyn_num */
|
|
|
|
|
}AI_IED_CTRL;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>
|
|
|
|
|
* @param ld_name <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param ied <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>ṹ
|
|
|
|
|
*/
|
|
|
|
|
AI_LD_CTRL *ai_find_ld(ST_CHAR *ld_name, AI_IED_CTRL *ied);
|
|
|
|
|
/**
|
|
|
|
|
* ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>
|
|
|
|
|
* @param ld_name <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param ied <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>ṹ
|
|
|
|
|
*/
|
|
|
|
|
AI_LD_CTRL *ai_add_ld(ST_CHAR *ld_name, AI_IED_CTRL *ied);
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ln<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ld<EFBFBD><EFBFBD>
|
|
|
|
|
* @param name <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param type_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
|
|
|
|
|
* @param ld <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
AI_LN_CTRL *ai_add_ln(ST_CHAR *ln_name, ST_INT type_id, AI_LD_CTRL *ld);
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>
|
|
|
|
|
* @param name <EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param mb_num <EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param mb_refs ds<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param deletable <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>
|
|
|
|
|
* @param parent <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ
|
|
|
|
|
*/
|
|
|
|
|
AI_DS_CTRL *ai_add_ds(ST_CHAR *ds_name, ST_INT mb_num, AI_OBJ_REF *mb_refs, ST_BOOLEAN deletable, AI_COMMON_OBJ *parent);
|
|
|
|
|
/**
|
|
|
|
|
* ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>
|
|
|
|
|
* @param ds_id <EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>id
|
|
|
|
|
* @param ied <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>ṹ
|
|
|
|
|
*/
|
|
|
|
|
ST_RET ai_delete_ds(ST_INT ds_id, AI_IED_CTRL *ied);
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>61850<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>
|
|
|
|
|
* @param type <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param name
|
|
|
|
|
*/
|
|
|
|
|
AI_COMMON_OBJ *ai_create_obj(AI_OBJ_TYPE type, ST_CHAR *name);
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD>ͷŶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
|
|
|
|
* @param ied <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>ṹ
|
|
|
|
|
*/
|
|
|
|
|
ST_VOID ai_destroy_ied(AI_IED_CTRL *ied);
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>
|
|
|
|
|
* @param ied <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>ṹ
|
|
|
|
|
* @param ds_ref <EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
AI_DS_CTRL *ai_find_ds(ST_CHAR *ds_ref, AI_IED_CTRL *ied);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif /** !IEC61850_AI_MSOBJ_INCLUDED */
|