/****************************************************************************
** File name    :  HTIEC61850.h
** Description  :  define iec 61850 network protocol api
** Create date  :  2019.09.01
** Auther by    :  Liuyx
** Version info :  V1.0.01
** Copyright (C) 2002-2019 xi'an huatek, Inc Co., Ltd
** Update record:
** DATE         AUTHER   DESC
** -------------------------------------------------------------------------
** 2019.09.01   Liuyx    first build
****************************************************************************/
#ifndef __HT_LIBIEC_61850_H
#define __HT_LIBIEC_61850_H
#include "HTGlobal.h"
#include "iec61850_client.h"
#include "iec61850_model.h"
#include "iec61850_dynamic_model.h"
#include "iec61850_config_file_parser.h"

#ifdef _SISCO_MMS_LITE
#pragma comment(lib,"acsi_ld.lib") 
#pragma comment(lib,"mmslite_ld.lib") 
#endif // _SISCO_MMS_LITE

#ifdef _LIB_IEC_61850
#pragma comment(lib,"iec61850.lib") 
#endif // _LIB_IEC_61850

#pragma pack (push ,1)



#pragma pack (pop)


#if defined (__cplusplus)
extern "C" {
#endif /* defined (__cplusplus) */

    // 获取错误消息
    const char *getIedError(int error);

    // 从远程IED获取模型配置
    int vGetRemoteIEDModelConfig(IedConnection con);

    // ICD文件解析
    IedModel *LoadModelConfigFile(char *icd_file);

    // 初始化61850链接环境参数
    void vIedInitIedEvent();

    // 释放链接及资源
    void vIedFreeIedEvent(ST_IED_CONN_HANDLE &stIedHandle);

    // 添加Ied不能连接的告警消息
    void vSetIedDevicesWarnMesg(char *Ied_ip, int port, time_t altime);

    // 删除Ied服务不能连接的告警消息
    void vDelIedDevicesWarnMesg(char *Ied_ip, int port, time_t altime);

    // IED文件浏览
    void showComtradeFile(IedConnection con, const char *pszDirName);

    // 录播文件下载,解析入库线程
    void vDownLoadComtradeFiles(/*void *arg*/ ST_IED_CONN_HANDLE &stIedCon);

    // 上传文件--目前IED不支持上传文件
    void setComtradeFile(IedConnection con, const char *filename);

    // 解析下载的录播文件并入库
    int  unPackComtradeFile(char *pfile);

    // 删除录播文件
    void deleteComtradeFile(IedConnection con, const char *filename);

    // 获取实时监测数据-遥测
    void vGetFCMXData_YC(IedConnection conn);

    // 获取实时监测数据-遥信
    void vGetFCMXData_YX(IedConnection conn);

    // 设置控制参数
    void vSetFCSEData_CTRL(IedConnection conn);

#if defined (__cplusplus)
}
#endif /* defined (__cplusplus) */

#endif /* __HT_LIBIEC_61850_H */
