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