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.

148 lines
4.5 KiB
C

1 year ago
/****************************************************************************/
/* Copyright (c) 2007,<2C><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾ */
/* All rights reserved. */
/* */
/* ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/**<2A><><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>ռ<EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
* ѡ<EFBFBD>񼤻ֵ<EFBFBD><EFBFBD> SelectActiveSG
* ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> SelectEditSG
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ GetSGValues
* д<EFBFBD><EFBFBD>ֵ SetSGValues
* ȷ<EFBFBD>ϱ<EFBFBD><EFBFBD>ֵ ConfirmEditSGValues
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD> GetSGCBValues
* @file ac_sg.h */
/* */
/* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ע<><D7A2> */
/* 2007/09/18 guoqiang <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
/****************************************************************************/
#ifndef IEC61850_AC_SG_INCLUDED
#define IEC61850_AC_SG_INCLUDED
/**
*
*/
#include "ai_obj.h"
#include "ac_reqm.h"
#ifdef __cplusplus
extern "C" {
#endif
/** <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
AI_OBJ_ID sgcb_id; /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD>ƿ<EFBFBD>ID*/
ST_INT group_num; /**< <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
ST_INT num_obj;
AI_OBJ_ID *obj_ids;
U_AC_REQ_DONE u_callback; /**< <20>û<EFBFBD><C3BB>ص<EFBFBD>ָ<EFBFBD><D6B8>*/
ST_INT timeout; /**< <20><>ʱʱ<CAB1><CAB1>*/
}AC_GETSGV_REQ_INFO;
/** д<><D0B4>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
typedef struct
{
AI_OBJ_ID sgcb_id; /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD>ƿ<EFBFBD>ID*/
ST_INT group_num; /**< д<><D0B4>ֵ<EFBFBD><D6B5>*/
ST_INT sg_num; /**< д<><D0B4>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>*/
AI_OBJ_VAL *sg_vals; /**< д<><D0B4>ֵֵ<D6B5><D6B5><EFBFBD><EFBFBD>*/
U_AC_REQ_DONE u_callback; /**< <20>û<EFBFBD><C3BB>ص<EFBFBD>ָ<EFBFBD><D6B8>*/
ST_INT timeout; /**< <20><>ʱʱ<CAB1><CAB1>*/
}AC_SETSGV_REQ_INFO;
/**
* һ<EFBFBD><EFBFBD>LD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ֵ<EFBFBD><EFBFBD>fcd<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
AI_OBJ_ID sgcb_id; /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD>ƿ<EFBFBD>ID*/
ST_INT sg_num; /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>*/
AI_OBJ_ID *sg_ids; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵID*/
AI_OBJ_ID *se_ids; /**< <20><EFBFBD><E0BCAD><EFBFBD><EFBFBD>ֵID*/
}AC_LD_SG_CTRL;
/**
* һ<EFBFBD><EFBFBD>IED<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ֵ<EFBFBD><EFBFBD>fcd<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
ST_INT sgcb_num; /**< <20><>ֵ<EFBFBD><D6B5><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>*/
AC_LD_SG_CTRL *ldsg_ctrl;/**< IED<45>µ<EFBFBD>AC_LD_SG_CTRL<52><EFBFBD><E1B9B9><EFBFBD><EFBFBD>*/
}AC_IED_SG_CTRL;
/**
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>˶<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ied<EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>sgcb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fcΪSG<EFBFBD><EFBFBD>SE<EFBFBD><EFBFBD>fcd<EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>s_ied_sgs<EFBFBD>С<EFBFBD>
* <EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD>ied<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ󣬵<EFBFBD><EFBFBD>ô˽ӿڡ<EFBFBD>
* @param ied ied<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ied_sg_ctrl <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
*/
ST_VOID ac_init_sg(AI_IED_CTRL *ied, AC_IED_SG_CTRL *ied_sg_ctrl);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>ͷų<EFBFBD>ʼ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ÿ<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return ST_VOID
*/
ST_VOID ac_uninit_sg(AC_IED_SG_CTRL *ied_sg_ctrl);
/**
* <EFBFBD><EFBFBD>s_ied_sgs<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sgcb<EFBFBD><EFBFBD>Ӧld_sg_ctrl
* @param srv_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
* @param sgcb <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>ID
* @return ָ<EFBFBD><EFBFBD>AC_LD_SG_CTRL<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
*/
AC_LD_SG_CTRL *ac_find_ld_sg_ctrl(ST_INT srv_id, AI_OBJ_ID sgcb);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡsgcb_id<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ld<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ֵ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>sgcb<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>š<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>group_num==act_sg<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӴӼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>group_num==edit_sg<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӵӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>group_num!=act_sg && group_num!=edit_sg<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>Ҫ<EFBFBD>Ȱѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>Ϊgroup_num<EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
* ֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ͷֶ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>fcd<EFBFBD><EFBFBD>id<EFBFBD><EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>g_ied_sgs<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
* @param srv_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
* @param setSgv_info <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ָ<EFBFBD><EFBFBD>
* @param req <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
*/
ST_RET ac_get_sg_values(ST_INT srv_id, AC_GETSGV_REQ_INFO *getSgv_info, AC_REQ_CTRL **req);
/**
* д<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>sgcb<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>act_sg<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>edit_sg<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>num_of_sg<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫд<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>group_num==edit_sg<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫд<EFBFBD>Ķ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>group_num!=edit_sg<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊgroup_num<EFBFBD><EFBFBD> Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>ȷ<EFBFBD>϶<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>سɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ֵ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>
* ֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ͷֶ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>
* @param srv_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
* @param setSgv_info д<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ָ<EFBFBD><EFBFBD>
* @param req <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
*/
ST_RET ac_set_sg_values(ST_INT srv_id, AC_SETSGV_REQ_INFO *setSgv_info, AC_REQ_CTRL **req);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ֵȷ<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
ST_RET ac_set_sg_values_pre(ST_INT srv_id, AC_SETSGV_REQ_INFO *setSgv_info, AC_REQ_CTRL **req);
/**
* <EFBFBD>ͷŶ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>getSgv_ctrlָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>.
* @param getSgv_ctrl <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return ST_VOID
*/
ST_VOID ac_cleanup_getSgvCtrl(AC_GSGV_REQ_CTRL *getSgv_ctrl);
/**
* <EFBFBD>ͷ<EFBFBD>д<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>setSgv_ctrlָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>.
* @param setSgv_ctrl <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return ST_VOID
*/
ST_VOID ac_cleanup_setSgvCtrl(AC_SSGV_REQ_CTRL *setSgv_ctrl);
#ifdef __cplusplus
}
#endif
#endif /**< IEC61850_AC_SG_INCLUDE */