Files
microser/mms/interface.h
2025-01-16 16:17:01 +08:00

183 lines
6.1 KiB
C

/**
* @file: $RCSfile: interface.h,v $
* @brief: $IEC 61850 Protocol
*
* @version: $Revision: 1.4 $
* @date: $Date: 2019/01/08 08:15:34 $
* @author: $Author: lizhongming $
* @state: $State: Exp $
*
* @latest: $Id: interface.h,v 1.4 2019/01/08 08:15:34 lizhongming Exp $
*
*/
//$Header: /JoyProject/jspqfe/src/pt61850netd_pqfe/source/mms/interface.h,v 1.4 2019/01/08 08:15:34 lizhongming Exp $
/************************************************************************/
/* SAC HEADER ************************************************************/
/************************************************************************/
/* */
/* MODULE NAME : interface.h */
/* PRODUCT(S) : wg_sac_61850 */
/* */
/* MODULE DESCRIPTION : */
/* Defines functions that should be use between mmsease and scadacom */
/* */
/* MODIFICATION LOG : */
/* Date Who Rev Comments */
/* -------- --- ------ ------------------------------------------- */
/* 2006-6-23 lzm 01 New */
/************************************************************************/
#ifndef SAC_INTERFACE_H
#define SAC_INTERFACE_H
///////////////////////////////////////////////////////
#if defined (_WIN32)
#include <winsock2.h>
#endif
#include "sasstd.h"
#include "glbtypes.h"
#include "sysincs.h"
#include "signal.h"
#include "mmsdefs.h"
#include "mms_pvmd.h"
#include "mms_pvar.h"
#include "mms_vvar.h"
#include "mms_err.h"
#include "mms_pcon.h"
#include "asn1defs.h"
#include "mmsop_en.h"
#include "mvl_log.h"
#include "slog.h"
#include "tp4api.h"
#include "clntobj.h"
#include "mmsclient.h"
///////////////////////////////////////////////////
#define MAX_DATA_STR_SIZE 256
#define DATA_INT_TYPE 0
#define DATA_UINT_TYPE 1
#define DATA_INT64_TYPE 2
#define DATA_UINT64_TYPE 3
#define DATA_DOUBLE_TYPE 4
#define DATA_STR_TYPE 5
#define DATA_TIME_TYPE 6
typedef struct mms_decode_data_item
{
ST_CHAR comp_name[MAX_DATA_STR_SIZE];
ST_UCHAR type; //Êý¾ÝÀàÐÍ
ST_UCHAR size; //Êý¾ÝµÄÓÐЧ×Ö½ÚÊý
union
{
ST_INT32 data_int;
ST_UINT32 data_uint;
#ifdef INT64_SUPPORT
ST_INT64 data_int64;
ST_UINT64 data_uint64;
#endif
ST_DOUBLE data_double;
ST_CHAR data_str[MAX_DATA_STR_SIZE];
MMS_BTIME6 data_bTime6;
} u;
} MMS_DECODE_DATA_ITEM;
#define MAX_DATA_ITEMS_IN_ONE_DATA 1024 // change for PQS882 2016-5-10 //10-10-26-8-53 bei jing
typedef struct mms_decode_data
{
ST_UINT item_num; //Êý¾ÝµÄÓÐЧ¸öÊý
MMS_DECODE_DATA_ITEM data_item[MAX_DATA_ITEMS_IN_ONE_DATA];
} MMS_DECODE_DATA;
void init_MMS();
void exit_MMS();
ST_VOID doCommService ();
ST_VOID init_log_cfg (ST_VOID);
ST_VOID set_rem_dib_table_size (ST_INT size);
ST_VOID add_rem_dib_table (ST_INT pos,ST_CHAR *remAr,unsigned short port);
ST_RET mms_connectToServer (ST_CHAR * dev_key,ST_CHAR *dev_series, ST_CHAR *serverARName,
MVL_NET_INFO **clientNetInfo, MVL_REQ_PEND **reqCtrl);
ST_RET mms_mvla_identify (MVL_NET_INFO *net_info,char** ident,int iTimeout);
ST_RET mms_mvla_fdir (MVL_NET_INFO *net_info,ST_CHAR *filespec,int iTimeout,
char*** filenames ,int* filenum,apr_pool_t *pool);
ST_RET mms_getFile (MVL_NET_INFO *clientNetInfo, ST_CHAR *loc_file,
ST_CHAR *rem_file, ST_INT iTimeout);
ST_RET mms_mvla_status (MVL_NET_INFO *net_info,int iTimeout);
ST_RET mms_mvla_getnam (MVL_NET_INFO *net_info,ST_INT scope,
ST_CHAR *domName,ST_INT16 mms_class, int iTimeout,
char*** varnames ,int* varnum,apr_pool_t *pool);
ST_INT mms_var_type_id_create (MVL_NET_INFO *clientNetInfo, ST_INT scope,
ST_CHAR *dom_name, ST_CHAR *var_name, int iTimeOut);
ST_RET mms_named_var_read (MVL_NET_INFO *net_info, ST_CHAR *varName,
ST_INT scope, ST_CHAR *domName,
ST_INT type_id, ST_VOID *dataDest, ST_INT timeOut);
ST_VOID Callback_channel_disconnect_ind(MVL_NET_INFO * NetInfo, ST_INT discType);
ST_RET mms_disconnectFromServer (MVL_NET_INFO *clientNetInfo,MVL_REQ_PEND **reqCtrl);
RCB_INFO *mms_register_iec_rpt (MVL_NET_INFO *clientNetInfo, RPT_TYPEIDS *rpt_typeids,
ST_CHAR *dom_name, /* domain which contains the RCB*/
ST_CHAR *rcb_name, /* RCB (e.g. "LLN0$BR$PosReport")*/
ST_INT timeOut, ST_INT scanRate,ST_UCHAR trgops,ST_UINT8* pEntryID,ST_UINT8* OptFlds);
ST_RET mms_unregister_iec_rpt (MVL_NET_INFO *clientNetInfo, RPT_TYPEIDS *rpt_typeids,
ST_CHAR *dom_name, /* domain which contains the RCB*/
ST_CHAR *rcb_name, /* RCB (e.g. "LLN0$BR$PosReport")*/
ST_INT timeOut );
//WW 2023-08-29 Ôö¼ÓÉ豸ÀàÐÍ´¦Àí
RCB_INFO *mms_register_iec_rpt_by_devtype(MVL_NET_INFO *clientNetInfo, RPT_TYPEIDS *rpt_typeids,
ST_CHAR *dom_name, /* domain which contains the RCB*/
ST_CHAR *rcb_name, /* RCB (e.g. "LLN0$BR$PosReport")*/
ST_INT timeOut, ST_CHAR *dev_type, ST_CHAR *ip, int port, ST_INT scanRate, ST_UCHAR trgops, ST_UINT8* pEntryID, ST_UINT8* OptFlds);
ST_RET mms_unregister_iec_rpt_by_devtype(MVL_NET_INFO *clientNetInfo, RPT_TYPEIDS *rpt_typeids, ST_CHAR *dev_type, ST_CHAR *ip, int port,
ST_CHAR *dom_name, /* domain which contains the RCB*/
ST_CHAR *rcb_name, /* RCB (e.g. "LLN0$BR$PosReport")*/
ST_INT timeOut);
//WW end
void my_local_to_data (ST_CHAR *datptr, SD_CONST RUNTIME_TYPE *rt_head,
ST_INT rt_num,MMS_DECODE_DATA *data);
RCB_INFO* FindRcbInfo(MVL_NET_INFO *net_info,ST_CHAR *dom_name, ST_CHAR *rcb_name);
int mms_iec_setPoint(ST_UCHAR ctlModel, MVL_NET_INFO *clientNetInfo,
ST_CHAR *dom_name, ST_CHAR *ctrl_name, float32_t fctlVal, ST_BOOLEAN Check, int iTimeOut);
int mms_iec_control (ST_UCHAR ctlModel,MVL_NET_INFO *clientNetInfo,
ST_CHAR *dom_name, ST_CHAR *ctrl_name, int ictlVal, ST_BOOLEAN Check, int iTimeOut);
int mms_iec_control_yt (ST_UCHAR ctlModel,MVL_NET_INFO *clientNetInfo,
ST_CHAR *dom_name, ST_CHAR *ctrl_name, int ictlVal, ST_BOOLEAN Check, int iTimeOut);
ST_INT mms_get_datatype_from_type_id (ST_INT type_id, ST_UCHAR* datatype,ST_INT *len);
void convert_apr_time_to_utc_time(apr_time_t tm,MMS_UTC_TIME *utc_time);
ST_RET my_asn1_convert_utc_to_btod (MMS_UTC_TIME *utc, MMS_BTOD *btod);
apr_time_t convert_btod_to_apr_time (MMS_BTOD *btod );
apr_time_t convert_btime6_to_apr_time (MMS_BTIME6 *bTime6 );
#endif //SAC_INTERFACE_H