/****************************************************************************/
/* Copyright (c) 2007,许继集团有限公司                                      */
/* All rights reserved.                                                     */
/*                                                                          */
/*  模块描述：                                                              */
/** 创建解析报告报文模块对外接口声明及数据结构定义
 *  @file  ac_lcb.h                                                      
 *  @author yh  huiy@xSgc.com												*/
/*                                                                          */
/* 日期         作者    注释                                                */
/* 2007/07/16   YH    创建文件                                              */
/****************************************************************************/
#ifndef IEC61850_LCB_INCLUDED
#define IEC61850_LCB_INCLUDED


#include "ac_reqm.h"
#include "ac_srvm.h"
#include "ai_sem.h"
#include "ai_log.h"
#include "mmsobj.h"
#include "mvl_defs.h"

#include "ai_obj.h"
#include "ai_objrw.h"
#include "ai_objval.h"

#ifdef __cplusplus
extern "C" {
#endif

/** 按时间读日志 */
typedef struct 
{
	AI_OBJ_ID  dom_id;              /**< LDID */
	EntryTime_TDEF start_time;      /**< 开始时间 */
	EntryTime_TDEF stop_time;       /**< 结束时间 */
	U_AC_REQ_DONE u_qlogbt_done;     /**<  用户回调函数指针*/
}AC_QLOGBYTIME_INFO;

/** 按entryID读日志 */
typedef struct 
{
	AI_OBJ_ID       dom_id;          /**< LDID */
	EntryTime_TDEF  start_time;      /**< 开始时间 */
	EntryID_TDEF 	EntryID;		 /**< 起始条目ID*/
	U_AC_REQ_DONE   u_qloga_done;    /**< 用户回调函数指针*/
}AC_QLOGAFTER_INFO;

/**
 * 发送一个按条目读日志服务请求
 * @param  acReqCtrl   请求结构指针
 * @retval SD_FAILURE  发送失败  
 * @retval SD_SUCCESS  发送成功
 */
ST_RET  ac_send_queryLog_after(AC_REQ_CTRL *acReqCtrl);

/**
 * 发送一个按时间读日志服务请求
 * @param  acReqCtrl   请求结构指针
 * @retval SD_FAILURE  发送失败  
 * @retval SD_SUCCESS  发送成功
*/
ST_RET  ac_send_queryLog_byTime(AC_REQ_CTRL *acReqCtrl);

/**
 * 按时间读日志服务请求构造、并加入待发送请求队列
 * @param  srvId		服务ID
 * @param  ac_reqInfo	   请求信息
 * @param  time_out		   请求超时时间
 * @param  ac_reqCtrl_out  请求结构（输出）
 * @retval SD_FAILURE  失败
 * @retval SD_SUCCESS 发送
 */
ST_RET  ac_query_log_by_time(ST_INT srv_id, 
							AC_QLOGBYTIME_INFO *ac_reqInfo, 
							ST_INT time_out, 
							AC_REQ_CTRL **ac_reqCtrl_out);
/**
 * 按条目读日志服务请求构造、并加入待发送请求队列
 * @param  srvId		服务ID
 * @param  ac_reqInfo	   请求信息
 * @param  time_out		   请求超时时间
 * @param  ac_reqCtrl_out  请求结构（输出）
 * @retval SD_FAILURE  失败
 * @retval SD_SUCCESS 发送
 */
ST_RET  ac_query_log_after(ST_INT  srv_id, 
						   AC_QLOGAFTER_INFO *ac_reqInfo, 
						   ST_INT time_out, 
						   AC_REQ_CTRL **ac_reqCtrl_out);

/**
 * 61850参引到MMS参引的转换
 * @param  iecref	             61850参引
 * @param  mmsref	             MMS参引
 * @return 无
 */
ST_VOID ac_iec61850_ref_to_mms_ref(ST_CHAR *iecref, ST_CHAR *mmsref);

/**
 * 释放AC_QLOG_CTRL结构成员所占资源。
 * obj_ids、obj_vals、results成员资源
 * @param  reqCtrl   请求结构指针
 * @return ST_VOID
 */
ST_VOID ac_cleanup_qlogReqCtrl(AC_QLOG_CTRL *reqCtrl);
#ifdef __cplusplus
}
#endif

#endif

