130 lines
4.7 KiB
C
130 lines
4.7 KiB
C
![]() |
/****************************************************************************/
|
|||
|
/* Copyright (c) 2008,<2C><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾ */
|
|||
|
/* All rights reserved. */
|
|||
|
/* */
|
|||
|
/* ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
/** damapӳ<70><D3B3><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ȡ<EFBFBD>ӿ<EFBFBD>
|
|||
|
* @file as_damap.h */
|
|||
|
/* */
|
|||
|
/* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ע<><D7A2> */
|
|||
|
/* 2008/09/22 DJF <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
|
|||
|
/****************************************************************************/
|
|||
|
#ifndef AS_DAMAP_INCLUDED
|
|||
|
#define AS_DAMAP_INCLUDED
|
|||
|
|
|||
|
//#include "scl.h" /* need SCL_INFO */
|
|||
|
#include "as_def.h"
|
|||
|
#include "mms_vvar.h"
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
#define NUMHAR 10 /* г<><D0B3>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
|||
|
#define MAX_NEST_LEVEL 50
|
|||
|
|
|||
|
//added djf 20090807
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
DBL_LNK l;
|
|||
|
//MVL_VAR_ASSOC * var;
|
|||
|
ST_UINT32 index; //<2F><>Ϊ<EFBFBD>洢<EFBFBD><E6B4A2>userinfo<66>ж<EFBFBD>ȡ<EFBFBD><C8A1>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
|||
|
ST_BOOLEAN gse_trged;//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>goose
|
|||
|
}MVL_VAR_LIST;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
ST_CHAR da_ref [MAX_IDENT_LEN + 1]; /* <20><><EFBFBD><EFBFBD>da<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:E1Q1SB1Ld1/LN$ST$Mod$stVal*/
|
|||
|
ST_CHAR usr_data_info [MAX_IDENT_LEN + 1];
|
|||
|
ST_VOID * dataPtr;
|
|||
|
RUNTIME_TYPE * dataType; /* data type of this leaf */
|
|||
|
AS_DA_TYPE type; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
ST_VOID * do_map; /* <20><>da<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>do<64><6F>map<61>ṹ,ʹ<><CAB9>ʱǿ<CAB1><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊas_do_map*/
|
|||
|
|
|||
|
MVL_VAR_LIST * var_list;//<2F><>data_map<61><70><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC>ij<EFBFBD>Ա added djf 20090807
|
|||
|
ST_VOID * last_data;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱȽ<DDB1> added djf 20090807
|
|||
|
} AS_DA_MAP;
|
|||
|
|
|||
|
/************************************************************************/
|
|||
|
/* TRACK_INFO structure */
|
|||
|
/************************************************************************/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
ST_UINT primdata_num; /* # of primitive data elements in variable */
|
|||
|
/* must account for arrays of structs. */
|
|||
|
ST_INT data_offset;
|
|||
|
ST_INT str_nest; /* current struct nest level */
|
|||
|
/* rt_type of start of structs containing this leaf. First entry is */
|
|||
|
/* top level struct, next is lower level struct, etc. */
|
|||
|
RUNTIME_TYPE * rt_type_str_start [MAX_NEST_LEVEL];
|
|||
|
ST_INT data_offset_str_start [MAX_NEST_LEVEL];
|
|||
|
} TRACK_INFO;
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD>ͷ<EFBFBD>vmd<EFBFBD><EFBFBD>maphead<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>da_map,do_map<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|||
|
*/
|
|||
|
ST_VOID as_datamap_cfg_destroy ();
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>damap<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
ST_INT as_da_map_count ( ST_CHAR * in_filename );
|
|||
|
|
|||
|
typedef ST_VOID (* U_USERMAP_CALLBACK )( AS_DA_MAP * map_entry );
|
|||
|
extern U_USERMAP_CALLBACK u_datamap_user_leaf;
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>datamap<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>datamap_file==NULL<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>Ϊÿ<EFBFBD><EFBFBD>da<EFBFBD><EFBFBD><EFBFBD><EFBFBD>datamap
|
|||
|
* @param da_map_file damapӳ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
|
|||
|
* @param ied_name ied<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
ST_RET as_create_da_map( ST_CHAR * da_map_file, ST_CHAR * ied_name );
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>datamap.cfg<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>user_map<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>da_map->usr_data_info<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>ai_init_envir֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|||
|
* @param obj_ref 61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ld/ln$fc$do$da
|
|||
|
* @param user_map <EFBFBD>û<EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
ST_RET as_reconfig_datamap( ST_CHAR * obj_ref, ST_CHAR * user_map );
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>da<EFBFBD><EFBFBD>map_entry
|
|||
|
* @param ref da<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ld/ln$fc$do$da
|
|||
|
* @return AS_DA_MAPָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NULL
|
|||
|
*/
|
|||
|
AS_DA_MAP * as_find_da_map_entry( ST_CHAR * ref );
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>da<EFBFBD><EFBFBD>do<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬damap_num_outΪda<EFBFBD><EFBFBD>da<EFBFBD>µ<EFBFBD>map<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param dx_ref da<EFBFBD><EFBFBD><EFBFBD><EFBFBD>do<EFBFBD><EFBFBD>leafname<EFBFBD><EFBFBD><EFBFBD>磺ST$DO$DA
|
|||
|
* @param ln_ctrl
|
|||
|
* @param damap_num_out <EFBFBD><EFBFBD><EFBFBD><EFBFBD>do<EFBFBD><EFBFBD>da<EFBFBD><EFBFBD>damap<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>da<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ϊ1
|
|||
|
* @return AS_DA_MAP ** damap<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>ΪNULL
|
|||
|
*/
|
|||
|
//AS_DA_MAP ** as_get_damaps_dxref( ST_CHAR * dx_ref,
|
|||
|
// MVL_VAR_ASSOC * ln_ctrl,
|
|||
|
// ST_INT * damap_num_out );
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD><EFBFBD>ȡda<EFBFBD><EFBFBD>ln<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>da<EFBFBD><EFBFBD>ƫ<EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>λln<EFBFBD>е<EFBFBD>damap
|
|||
|
* @return <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
//ST_RET as_get_map_info_daref( ST_CHAR * da_ref, //da<64><61>leafname<6D><65><EFBFBD>磺ST$DO$DA
|
|||
|
// MVL_VAR_ASSOC * ln_ctrl, //ln<6C>ṹ
|
|||
|
// ST_INT * fst_offset, //<2F><><EFBFBD>ص<EFBFBD>da<64><61>ln<6C>µ<EFBFBD>ƫ<EFBFBD><C6AB>
|
|||
|
// RUNTIME_TYPE ** dx_rt_out );//<2F><><EFBFBD>ص<EFBFBD>da<64><61>rt
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rt<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
ST_VOID as_loop_count_prim ( RUNTIME_TYPE * rt_first,
|
|||
|
ST_INT rt_num,
|
|||
|
TRACK_INFO * track_info );
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
#endif /* !AS_DAMAP_INCLUDED */
|