/****************************************************************************/ /* 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 */