You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

453 lines
12 KiB
C

1 year ago
/****************************************************************************/
/* 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><EFBFBD>й<EFBFBD><D0B9><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD>
* @file ac_reqm.h
* @author yh huiy@xjgc.com */
/* */
/* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ע<><D7A2> */
/* 2007/07/16 YH <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
/****************************************************************************/
#ifndef IEC61850_AC_REQM_INCLUDED
#define IEC61850_AC_REQM_INCLUDED
#include "ai_def.h"
#include "mms_mp.h"
#include "mvl_defs.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MAX_FILE_NAME_LENGTH 255
/** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
SOCKET sock; /**< <20><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD>ر<EFBFBD>socket */
MVL_NET_INFO *net_info; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>Ϣ<EFBFBD>ṹָ<E1B9B9><D6B8>*/
}AC_ASSOC_REQ_CTRL;
/** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
AI_OBJ_ID *obj_ids; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44><EFBFBD><EFBFBD>*/
AI_OBJ_TYPE obj_type; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
ST_INT num_obj; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DS<44><53><EFBFBD><EFBFBD>DS<44><53><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>*/
AI_OBJ_VAL *obj_vals; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϣ<EFBFBD>ṹָ<E1B9B9><D6B8>*/
ST_INT *results; /**< <20><><EFBFBD><EFBFBD>*/
}AC_READ_REQ_CTRL;
/** <20><><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
AI_OBJ_ID ds_id; /**< <20><><EFBFBD>ݼ<EFBFBD>ID*/
ST_INT num; /**< <20><><EFBFBD>ݳ<EFBFBD>Ա<EFBFBD><D4B1>Ŀ */
AI_OBJ_VAL *obj_vals; /**< ÿ<><C3BF><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϣ<EFBFBD>ṹָ<E1B9B9><D6B8>*/
}AC_GETDSV_REQ_CTRL;
/** д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
AI_OBJ_VAL *obj_vals; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϣ<EFBFBD>ṹָ<E1B9B9><D6B8>*/
ST_INT num_obj; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
ST_INT *results; /**< <20><><EFBFBD><EFBFBD>*/
}AC_WRITE_REQ_CTRL;
/** <20><>ȡiedĿ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
ST_CHAR **names; //ld <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ST_INT num; //ld<6C><64><EFBFBD><EFBFBD>
}AC_GIEDD_REQ_CTRL;
/** <20><>ȡldĿ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
ST_CHAR ld_name[MAX_IDENT_LEN+1];
AI_OBJ_TYPE obj_type; //var <20><> nvl
ST_CHAR **names; //var<61><72>nvl<76><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ST_INT num; //var<61><72><EFBFBD><EFBFBD>
ST_BOOLEAN morefollow;
}AC_GLDD_REQ_CTRL;
/** <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><E5A3AC><EFBFBD><EFBFBD>Ϊln<6C><6E>ln<6C><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef struct
{
AI_OBJ_REF obj_ref;
ST_CHAR *tdl;
}AC_GOBJDEF_REQ_CTRL;
/** <20><>ȡdsĿ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
AI_OBJ_REF ds_ref;
AI_OBJ_REF *mb_refs;
ST_INT mb_num;
ST_BOOLEAN deletable;
}AC_GDSD_REQ_CTRL;
/** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
AI_OBJ_REF ds_ref; /**< <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>*/
ST_INT *mb_ids; /**< <20><>ԱID<49><44><EFBFBD><EFBFBD>*/
OBJECT_NAME ds_name; /**< <20><><EFBFBD><EFBFBD>*/
OBJECT_NAME *mb_names; /**< <20><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
ST_INT num_var; /**< <20><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>*/
ST_INT ds_id; /**< <20><><EFBFBD>ݼ<EFBFBD>ID */
} AC_CREDS_REQ_CTRL;
/** ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
ST_INT ds_id; /**< <20><><EFBFBD>ݼ<EFBFBD>ID*/
} AC_DELDS_REQ_CTRL;
/** <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
ST_CHAR filename[MAX_FILE_NAME_LENGTH+1];/**< <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>*/
ST_UINT32 filesize; /**< <20>ļ<EFBFBD><C4BC><EFBFBD>С */
MMS_UTC_TIME t; /**< <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ʱ<EFBFBD><CAB1> */
}AC_FILE_ATTRIBUTE_REQ_CTRL;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
AI_OBJ_ID sgcb_id; /**< sgcb<63><62><EFBFBD>ƿ<EFBFBD><C6BF>Ķ<EFBFBD><C4B6><EFBFBD>ID */
ST_INT group; /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
ST_BOOLEAN isSe; /**< SD_TRUE<55><45><EFBFBD><EFBFBD><E0BCAD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>SD_FALSE<53><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ*/
ST_INT sg_num; /**< ȡ<>صĶ<D8B5>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
AI_OBJ_VAL *sg_vals; /**< ȡ<>صĶ<D8B5>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ST_INT counter; /**< һ<>ζ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
}AC_GSGV_REQ_CTRL;
/**
* д<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
AI_OBJ_ID sgcb_id; /**< sgcb<63><62><EFBFBD>ƿ<EFBFBD><C6BF>Ķ<EFBFBD><C4B6><EFBFBD>ID */
ST_INT group; /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
ST_INT sg_num; /**< <20>·<EFBFBD><C2B7>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
AI_OBJ_VAL *sg_vals; /**< <20>·<EFBFBD><C2B7>Ķ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ST_INT counter; /**< һ<>ζ<EFBFBD>дһ<D0B4><D2BB><EFBFBD><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ST_BOOLEAN write_cnf; /**< <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ֵȷ<D6B5>ϲ<EFBFBD><CFB2><EFBFBD> */
}AC_SSGV_REQ_CTRL;
typedef struct
{
ST_INT frsmid; /**< <20>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>ļ<EFBFBD><C4BC><EFBFBD>ʶ<EFBFBD><CAB6>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>*/
FILE *fp; /**< <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>õ<EFBFBD><C3B5>ľ<EFBFBD><C4BE><EFBFBD> */
}FILE_READ_IDFP;
/**
* <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
ST_CHAR src_fname[MAX_FILE_NAME_LENGTH+1]; /**< Դ<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ƣ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> */
ST_CHAR dest_fname[MAX_FILE_NAME_LENGTH+1]; /**< Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><E6B5BD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD> */
FILE_READ_IDFP *hp;
}AC_GETF_REQ_CTRL;
/**
* д<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
ST_CHAR src_fname[MAX_FILE_NAME_LENGTH+1]; /**< Դ<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ST_CHAR dest_fname[MAX_FILE_NAME_LENGTH+1]; /**< Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ƣ<EFBFBD>д<EFBFBD><D0B4>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD> */
}AC_SETF_REQ_CTRL;
/**
* ɾ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
*/
typedef struct
{
ST_CHAR file_name[MAX_FILE_NAME_LENGTH+1]; /**< Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
}AC_DELF_REQ_CTRL;
/**
* <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
ST_CHAR file_name[MAX_FILE_NAME_LENGTH+1]; /**< File Name */
ST_INT32 file_size; /**< <20>ļ<EFBFBD><C4BC>ߴ<EFBFBD> */
ST_TIMESTAMP last_modified; /**< <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ʱ<EFBFBD><CAB1> */
}AC_FILE_ATTR;
/**
* <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD>ij<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 file_name[MAX_FILE_NAME_LENGTH+1]; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
ST_INT file_num; /**< <20><><EFBFBD>ص<EFBFBD><D8B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>file_nameΪ<65>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ1 */
AC_FILE_ATTR *file_attrs; /**< <20><><EFBFBD>ص<EFBFBD><D8B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD> */
}AC_GETFAV_REQ_CTRL;
/** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ִ<EFBFBD>нṹ<D0BD><E1B9B9>ֵ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD> */
typedef struct /* Values -7-2-17.5.2.2 and -8-1-E4.4 */
{
union
{
ST_BOOLEAN bVal; /* SPC or DPC */
ST_INT32 iVal32; /* INC */
ST_INT8 iVal8; /* ISC */
CODE_ENUM_TDEF cdVal;/* BSC*/
ST_UINT8 iUVal8;
struct
{
ST_INT32 iVal; /* for i */
ST_FLOAT fVal; /* for f */
}setMag; /* APC only one attribute f or i shall be present at a given time for APC*/
}val;
struct {
ST_INT8 orCat;
ST_OSTRING64 orIdent;
} origin;
ST_UINT8 ctlNum;
ST_TIMESTAMP operTm;
ST_TIMESTAMP T;
ST_CHECK check;
ST_BOOLEAN Test;
} AC_CTRL_VALUE;
/** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD> */
typedef struct
{
AI_OBJ_ID ctrl_obj;
AC_CTRL_VALUE ctrl_val;
ST_RET result;
}AC_CTRL_REQ_CTRL;
/** <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
typedef struct
{
EntryID_TDEF EntryID; /**< <20><>ĿID*/
EntryTime_TDEF TimeOfEntry; /**< <20><>Ŀʱ<C4BF><CAB1>*/
AI_OBJ_VAL *obj_vals; /**< <20><><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>*/
AI_OBJ_REF *obj_ref; /**< <20><><EFBFBD><EFBFBD>*/
ST_INT obj_num; /**< <20><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>*/
ST_RET result;
}AC_QLOGENTRY_CTRL;
/** <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
typedef struct
{
AI_OBJ_ID dom_id; /**< LDID */
EntryTime_TDEF start_time; /**< <20><>ʼʱ<CABC><CAB1> */
EntryTime_TDEF stop_time; /**< <20><>ֹʱ<D6B9><CAB1> */
EntryID_TDEF startEntryID; /**< <20><>ʼ<EFBFBD><CABC>ĿID*/
ST_INT entry_num; /**< <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>*/
AC_QLOGENTRY_CTRL *entry_info; /**< <20><>Ŀ<EFBFBD><C4BF>Ϣ*/
ST_RET result;
}AC_QLOG_CTRL;
/**
* ENABLE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>
*/
typedef struct
{
AI_OBJ_ID rcb_id; /**< <20><><EFBFBD><EFBFBD>ID*/
ST_INT OptFlds; /**< OptFldsֵ*/
ST_INT TrgOps; /**< TrgOpsֵ*/
ST_INT IntgPd; /**< IntgPdֵ*/
ST_BOOLEAN rptEna;
ST_VOID * attr_info;
}AC_ENAREPORT_CTRL;
/** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct ac_req_ctrl
{
DBL_LNK l;
ST_INT srv_id; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID */
IEC61850_OP op; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
union{
AC_ASSOC_REQ_CTRL assoCtrl; /**< associate */
AC_READ_REQ_CTRL rdCtrl; /**< read */
AC_WRITE_REQ_CTRL wrCtrl; /**< write */
AC_GIEDD_REQ_CTRL gieddCtrl; /**< get server directory */
AC_GLDD_REQ_CTRL glddCtrl; /**< get ld directory */
AC_GOBJDEF_REQ_CTRL gobjdefCtrl; /**< get obj definition */
AC_GDSD_REQ_CTRL gdsdCtrl; /**< get dataSet directory */
AC_CREDS_REQ_CTRL credsCtrl; /**< create dataSet */
AC_DELDS_REQ_CTRL deldsCtrl; /**< delete dataSet */
AC_GETDSV_REQ_CTRL getdsvCtrl; /**< get dataSet value */
AC_GSGV_REQ_CTRL getsgvCtrl; /**< get sg value */
AC_SSGV_REQ_CTRL setsgvCtrl; /**< set sg value */
AC_CTRL_REQ_CTRL ctrlCtrl; /**< select selectWithVal cancel oper */
AC_GETF_REQ_CTRL getfCtrl; /**< get file */
AC_SETF_REQ_CTRL setfCtrl; /**< set file */
AC_DELF_REQ_CTRL delfCtrl; /**< delete file */
AC_GETFAV_REQ_CTRL getfavCtrl; /**< get file attribute value */
AC_QLOG_CTRL qlogCtrl; /**< querylogbytime */
AC_ENAREPORT_CTRL enaRptCtrl; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
}u; /**< <20><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
ST_RET result; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD>*/
ST_DOUBLE timeout; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>*/
/**< <20>ص<EFBFBD><D8B5><EFBFBD>Ӧ<EFBFBD>ò<EFBFBD><C3B2>Ļص<C4BB>ָ<EFBFBD><D6B8>*/
ST_VOID (*u_ac_req_done)(struct ac_req_ctrl *req_ctrl);
ST_VOID *sg_info;
ST_VOID *user_info;
//new
AC_CHANNEL chnl; //A<><41>B<EFBFBD><42><EFBFBD><EFBFBD>־
}AC_REQ_CTRL;
/** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󷵻ظ<F3B7B5BB>Ӧ<EFBFBD>ò<EFBFBD><C3B2>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>*/
typedef ST_VOID (*U_AC_REQ_DONE)(AC_REQ_CTRL *req_ctrl);
/**
* <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>ֵ
* @param op <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>־<EFBFBD><EFBFBD>Ŀǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ0~20
* @param srv_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
* @param time_out <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD>
* @param u_req_done <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ָ<EFBFBD><EFBFBD>
* @return AC_REQ_CTRL *Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ͷָ<EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>NULL
*/
AC_REQ_CTRL *ac_create_reqCtrl(IEC61850_OP op, ST_INT srv_id, ST_INT time_out, U_AC_REQ_DONE u_req_done);
/**
* <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>Դ
* @param reqCtrl <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return ST_VOID
*/
ST_VOID ac_destroy_reqCtrl(AC_REQ_CTRL *reqCtrl);
/**
* <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>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
* @param reqCtrl <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return ST_VOID
*/
ST_VOID ac_cancel_reqCtrl(AC_REQ_CTRL *reqCtrl);
/**
* <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 reqCtrl <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @retval SD_FAILURE ʧ<EFBFBD><EFBFBD>
* @retval SD_SUCCESS <EFBFBD>ɹ<EFBFBD>
*/
ST_RET ac_send_req(AC_REQ_CTRL *reqCtrl);
/**
* <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 srv_id վ<EFBFBD><EFBFBD>ID
* @return ST_VOID
*/
ST_VOID ac_cleanup_acReqList(ST_INT srv_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>
* @param net_info <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return ST_VOID
*/
ST_VOID ac_mvlReqList_handle(MVL_NET_INFO *net_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>
* @param srv_id
* @return ST_VOID
*/
ST_VOID ac_acReqList_handle(ST_INT srv_id);
/**
* <EFBFBD>ͷ<EFBFBD>MVL_REQ_PEND<EFBFBD>
* @param reqPend <EFBFBD>ѷ<EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return ST_VOID
*/
ST_VOID ac_destroy_mvlReqPend(MVL_REQ_PEND *reqPend);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ʱ
* @param reqCtrl <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @retval SD_TRUE <EFBFBD><EFBFBD>ʱ
* @retval SD_FALSE δ<EFBFBD><EFBFBD>ʱ
*/
ST_BOOLEAN ac_req_timeout(AC_REQ_CTRL *reqCtrl);
/**
* ͨ<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>
* @param srv_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
* @param req_ctrl Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval SD_SUCCESS <EFBFBD>ɹ<EFBFBD> SD_FAILURE ʧ<EFBFBD><EFBFBD>
*/
ST_RET ac_add_req_last(ST_INT srv_id, AC_REQ_CTRL *req_ctrl);
/**
* ͨ<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>
* @param srv_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
* @retval AC_REQ_CTRL ȡ<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
*/
AC_REQ_CTRL * ac_get_req_first(ST_INT srv_id);
/**
* ͨ<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>req_ctrl<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param srv_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
* @param req_ctrl Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval AC_REQ_CTRL ȡ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܻ<EFBFBD>Ϊ<EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>NULL
*/
AC_REQ_CTRL * ac_get_req_next(ST_INT srv_id, AC_REQ_CTRL *req_ctrl);
/**
* <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 srv_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
* @param req_ctrl Ҫ<EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
ST_VOID ac_unlink_req(ST_INT srv_id, AC_REQ_CTRL *req_ctrl);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>ص<EFBFBD>
* @param req_ctrl <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ret <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
ST_VOID ac_req_done(AC_REQ_CTRL *req_ctrl, ST_RET ret);
#ifdef __cplusplus
}
#endif
#endif /**< IEC61850_AC_REQM_INCLUDE */