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.

163 lines
5.6 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/****************************************************************************/
/* Copyright (c) 2007,许继集团有限公司 */
/* All rights reserved. */
/* */
/* 模块描述: */
/** 客户端目录服务模块,提供目录服务相关操作接口
* @file ac_dir.h */
/* */
/* 日期 作者 注释 */
/* 2007/08/14 ZYZ 创建文件 */
/****************************************************************************/
#ifndef IEC61850_AC_DIR_H
#define IEC61850_AC_DIR_H
#include "ac_reqm.h"
#ifdef __cplusplus
extern "C" {
#endif
/*#define MAX_TDL_LEN 20240 // 影射层使用的最大TDL长度 */
/** ld目录服务请求所需信息结构定义*/
typedef struct
{
ST_CHAR *ld_name; /**< ld名称*/
AI_OBJ_TYPE type; /**< 请求成员类型ln or ds*/
U_AC_REQ_DONE u_getldd_done; /**< 用户回调函数指针*/
}AC_GETLDD_REQ_INFO;
/** 获取对象属性服务请求所需信息结构定义*/
typedef struct
{
AI_OBJ_REF obj_ref; /**< 对象参引*/
U_AC_REQ_DONE u_getobjdef_done; /**< 用户回调函数指针*/
}AC_GETOBJDEF_REQ_INFO;
/** ds目录服务请求所需信息结构定义*/
typedef struct
{
AI_OBJ_REF ds_ref; /**< 数据集参引*/
U_AC_REQ_DONE u_getdsd_done; /**< 用户回调函数指针*/
} AC_GETDSD_REQ_INFO;
/**
* 读ied目录服务接口.
* 该函数会创建请求结构,并把请求加入统一请求链表中,等待统一请求管理
* @param srv_id 服务器ID
* @param u_req_done 用户回调函数指针
* @param timeout 请求超时时间,单位为秒
* @param req 传出的请求结构指针地址,应用层要申请存放请求结构指针的内存
* @retval SD_SUCCESS 服务加入请求链表成功
* @retval SD_FAILURE 服务加入请求链表失败
*/
ST_RET ac_get_ied_dir(ST_INT srv_id, U_AC_REQ_DONE u_req_done, ST_INT timeout, AC_REQ_CTRL **req);
/**
* 发送读ied目录服务接口此时请求已从链表中取出,该接口被统一请求管理函数调用处理
* @param ac_req_ctrl 请求结构
* @retval SD_SUCCESS 发送成功
* @retval SD_FAILURE 发送失败
*/
ST_RET ac_send_getIedDir_req(AC_REQ_CTRL *ac_req_ctrl);
/**
* 释放giedd_req_ctrl,该接口被统一请求管理中函数调用处理
* @param gvmdd_req_ctrl 目录服务结构
* @retval 无
*/
ST_VOID ac_cleanup_gieddReqCtrl(AC_GIEDD_REQ_CTRL *giedd_req_ctrl);
/**
* 读ld目录服务接口请求加入请求链表中
* @param srv_id 服务器ID
* @param getldd_req_info ld目录服务请求所需信息结构定义
* @param time_out 请求超时时间,单位为秒
* @param req 传出的请求结构指针地址,应用层要申请存放请求结构指针的内存
* @retval SD_SUCCESS 服务加入请求链表成功
* @retval SD_FAILURE 服务加入请求链表失败
*/
ST_RET ac_get_ld_dir(ST_INT srv_id, AC_GETLDD_REQ_INFO *getldd_req_info, ST_INT time_out, AC_REQ_CTRL **req);
/**
* 发送读ld目录服务接口请求已从链表中取出,该接口被统一请求管理函数调用处理
* @param ac_req_ctrl 请求结构
* @retval SD_SUCCESS 发送成功
* @retval SD_FAILURE 发送失败
*/
ST_RET ac_send_getLdDir_req(AC_REQ_CTRL *ac_req_ctrl);
/**
* 释放gdomd_req_ctrl,该接口被统一请求管理中函数调用处理
* @param gdomd_req_ctrl 目录服务结构
* @retval 无
*/
ST_VOID ac_cleanup_glddReqCtrl(AC_GLDD_REQ_CTRL *gldd_req_ctrl);
/**
* 读obj定义服务接口请求加入请求链表中
* @param srv_id 服务器ID
* @param getobjdef_req_info 获取对象属性服务请求所需信息结构定义
* @param time_out 请求超时时间,单位为秒
* @param req 传出的请求结构指针地址,应用层要申请存放请求结构指针的内存
* @retval SD_SUCCESS 服务加入请求链表成功
* @retval SD_FAILURE 服务加入请求链表失败
*/
ST_RET ac_get_obj_definition(ST_INT srv_id, AC_GETOBJDEF_REQ_INFO *getobjdef_req_info, ST_INT time_out, AC_REQ_CTRL **req);
/**
* 发送读obj定义服务接口请求已从链表中取出,该接口被统一请求管理函数调用处理
* @param ac_req_ctrl 请求结构
* @retval SD_SUCCESS 发送成功
* @retval SD_FAILURE 发送失败
*/
ST_RET ac_send_getObjDef_req(AC_REQ_CTRL *ac_req_ctrl);
/**
* 释放gobjdef_req_ctrl,该接口被统一请求管理中函数调用处理
* @param gobjdef_req_ctrl 目录服务结构
* @retval 无
*/
ST_VOID ac_cleanup_gobjdefReqCtrl(AC_GOBJDEF_REQ_CTRL *gobjdef_req_ctrl);
/**
* 读ds目录服务接口请求加入请求链表中
* @param srv_id 服务器ID
* @param getdsd_req_info ds目录服务请求所需信息结构定义
* @param time_out 请求超时时间,单位为秒
* @param req 传出的请求结构指针地址,应用层要申请存放请求结构指针的内存
* @retval SD_SUCCESS 服务加入请求链表成功
* @retval SD_FAILURE 服务加入请求链表失败
*/
ST_RET ac_get_ds_dir(ST_INT srv_id, AC_GETDSD_REQ_INFO *getdsd_req_info, ST_INT time_out, AC_REQ_CTRL **req);
/**
* 发送读ds目录服务接口请求已从链表中取出,该接口被统一请求管理函数调用处理
* @param ac_req_ctrl 请求结构
* @retval SD_SUCCESS 发送成功
* @retval SD_FAILURE 发送失败
*/
ST_RET ac_send_getDsDir_req(AC_REQ_CTRL *ac_req_ctrl);
/**
* 释放gdsd_req_ctrl,该接口被统一请求管理函数调用处理
* @param gnvld_req_ctrl 目录服务结构
* @retval 无
*/
ST_VOID ac_cleanup_gdsdReqCtrl(AC_GDSD_REQ_CTRL *gdsd_req_ctrl);
/**
* acsi类型到mms类型转换
* @param obj_type 要转换的acsi类型
* @retval ST_INT16 mms类型
*/
ST_INT16 ai_obj_type_to_mms_class(AI_OBJ_TYPE obj_type);
#ifdef __cplusplus
}
#endif
#endif /** IEC61850_AC_DIR_H */