/****************************************************************************/
/* Copyright (c) 2007,许继集团有限公司                                      */
/* All rights reserved.                                                     */
/*                                                                          */
/*  模块描述：                                                              */
/** 客户端目录服务模块，提供通过目录创建对象空间相关函数
 *  @file  ac_crdir.h                                                       */
/*                                                                          */
/* 日期         作者    注释                                                */
/* 2007/08/14   ZYZ     创建文件                                            */
/****************************************************************************/

#ifndef IEC61850_AC_CRDIR_H
#define IEC61850_AC_CRDIR_H

#include "ac_reqm.h"


#ifdef __cplusplus
extern "C" {
#endif
/**
* 获取ld目录服务超时时间宏定义
*/
#define DIR_TIME_OUT 90
/** 保存var结构定义的中间结构*/
typedef struct 
{
	AI_OBJ_REF var_ref;
	ST_CHAR *tdl;
}AC_VARAA_CTRL;

/** 保存nvl目录的中间结构*/
typedef struct 
{
	AI_OBJ_REF nvl_ref;
	ST_BOOLEAN deletable;       
	AI_OBJ_REF *names;             //成员变量的名称数组
	ST_INT num;                    //成员变量总数
} AC_NVLD_CTRL;

/** 保存dom目录的中间结构*/
typedef struct 
{
	ST_CHAR dom_name[MAX_IDENT_LEN + 1];
	AC_VARAA_CTRL *varaa_tbl;   //存放var信息的AC_VARAA_CTRL数组
	ST_INT       var_num;
	AC_NVLD_CTRL *nvl_tbl;      //存放nvl信息的AC_NVLD_CTRL数组
	ST_INT       nvl_num;        
}AC_DOMD_CTRL;

/** 保存vmd目录的中间结构*/
typedef struct 
{
	ST_INT  dir_state;     //初始时状态为0，发送目录服务请求后置1，服务结束后置0
	ST_INT  cre_counter;
	AC_DOMD_CTRL *dom_tbl; //存放dom信息的AC_DOMD_CTRL数组
	ST_INT  dom_num;     
}AC_VMDD_CTRL;



/**
 * 通过目录服务创建一个ied设备的对象空间.
 * 应用层只需传入服务器id该接口自动通过目录服务完成对象空间的创建
 * @param   srv_id		      服务器ID
 * @retval  SD_SUCCESS        发送通过目录服务创建对象空间请求成功
 * @retval  SD_FAILURE        发送通过目录服务创建对象空间请求失败
 */
ST_RET ac_create_ied_dir(ST_INT srv_id);

	
#ifdef __cplusplus
}
#endif
#endif /** IEC61850_AC_CRDIR_H */
