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.

103 lines
3.3 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. */
/* */
/* 模块描述: */
/** 数据转换模块实现MMS数据〈----〉primval数组之间的转换接口函数
* @file ai_objval.h */
/* */
/* 日期 作者 注释 */
/* 2007/07/16 YH 创建文件 */
/****************************************************************************/
#ifndef IEC61850_AI_OBJVAL_INCLUDED
#define IEC61850_AI_OBJVAL_INCLUDED
#include "ai_obj.h"
#include "sx_log.h"
#include "mvl_log.h"
#include "ai_objid.h"
#include "ai_objrw.h"
#include "mmsobj.h"
#include "ai_log.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
*基本类型数据信息
*/
typedef struct ai_prim_info
{
ST_INT prim_total_num;
ST_INT prim_num;
ST_INT prim_offset;
}AI_PRIM_INFO;
/**
* 释放对象信息存储内存接口
* @param objVals 对象结构指针
* @return ST_VOID
*/
ST_VOID ai_cleanup_objVals(AI_OBJ_VAL *objVal);
/**
* 由简单类型的rt得到AI_VAL_TYPE类型及长度
*/
ST_RET ai_get_type_info_by_primRt(RUNTIME_TYPE *rt, AI_VAL_TYPE *type_out, ST_INT *len_out);
/**
* 由基本数据类型DA的AI_PRIM_VAL数组生成 MMS数据缓冲区数据Data
* @param valist 以数组形式申请内存空间
* @param num_var 数组大小
* @param data MMS数据缓冲区地址指针,输出
* @param type_id MMS数据类型ID
* @retval SD_SUCCESS 成功
* @retval SD_FAILURE 失败
*/
ST_RET ai_primVals_to_compVal(AI_PRIM_VAL *valist, ST_INT num_var, ST_VOID *data, ST_INT type_id);
/**
* MMS数据缓冲区数据Data的解析函数生成基本数据类型DA的AI_PRIM_VAL数组。
* *valist的内存由函数内部申请由本接口使用者释放一般可调用ai_cleanup_objVals接口函数清理。
* @param data MMS数据缓冲区地址指针
* @param type_id MMS数据类型ID
* @param valist 传出的解析结果,以数组形式申请内存空间
* @param num_out 数组大小,传出参数
* @retval SD_SUCCESS 成功
* @retval SD_FAILURE 失败
*/
ST_RET ai_compVal_to_primVals(ST_VOID *data, ST_INT type_id, AI_PRIM_VAL **valist, ST_INT *num_out);
/**
* 获取对象的某个属性的值,这个属性必须是简单数据类型
* @param ied ied对象
* @param obj_id 对象id
* @param attr_name 属性的名字
* @param data_size 属性的值所占内存的大小,用户必须事先知道此值
* @param *data 属性值缓冲区,调用者分配内存
*/
ST_RET ai_get_obj_attr_val(AI_IED_CTRL *ied, AI_OBJ_ID obj_id,
ST_CHAR *attr_name, ST_INT data_size, ST_VOID *data);
/**
* 克隆对象数据AI_OBJ_VAL类型的数据用户需释放最终得到的dest调用ai_cleanup_obj_val
* 释放dest数组中的每个obj_val然后再释放dest指针
* @param dest 目标obj_vals数组
* @param src 源obj_vals数组
* @param num 对象值的个数
*/
ST_VOID ai_clone_obj_vals(AI_OBJ_VAL **dest, AI_OBJ_VAL *src, ST_INT num);
/**
*获取基本数据类型长度
*/
ST_INT ai_get_Data_Len(AI_VAL_TYPE type);
#ifdef __cplusplus
}
#endif
#endif /** !IEC61850_AI_OBJVAL_INCLUDED */