|
|
|
|
/****************************************************************************
|
|
|
|
|
** File name : HTIEC61850Macros.h
|
|
|
|
|
** Description : IEC 61850 Macros define
|
|
|
|
|
** 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_IEC_61850_MACROS_H
|
|
|
|
|
#define __HT_IEC_61850_MACROS_H
|
|
|
|
|
#include "HTGlobal.h"
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
|
|
|
|
/************************************************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>comtrade<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>16<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>㲻<EFBFBD>ᳬ<EFBFBD><EFBFBD>64<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>64<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>㲻<EFBFBD>ᳬ<EFBFBD><EFBFBD>8<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
************************************************************************************/
|
|
|
|
|
|
|
|
|
|
#define CMTR_REV_YEAR_LENGTH 4
|
|
|
|
|
#define CMTR_STRING_MAX_LENGTH 64
|
|
|
|
|
#define CMTR_ANALOG_MAX_COUNT 255
|
|
|
|
|
#define CMTR_DIGIT_MAX_COUNT 255
|
|
|
|
|
#define CMTR_SMPRATE_MAX_COUNT 255
|
|
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
|
#define f_open _open
|
|
|
|
|
#define f_read _read
|
|
|
|
|
#define f_write _write
|
|
|
|
|
#define f_close _close
|
|
|
|
|
#else
|
|
|
|
|
#define f_open open
|
|
|
|
|
#define f_read read
|
|
|
|
|
#define f_write write
|
|
|
|
|
#define f_close close
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/************************************************************************************
|
|
|
|
|
* ht_cmtr_openrb/ht_cmtr_openwb/ht_cmtr_openab/ht_cmtr_close
|
|
|
|
|
* - <EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>д<EFBFBD>ýӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>recv\send<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r\w<EFBFBD><EFBFBD>
|
|
|
|
|
* @pfd: <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>socket<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>
|
|
|
|
|
* @str: <EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD>ڵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
************************************************************************************/
|
|
|
|
|
#define ht_cmtr_openrb(str) (f_open((str), O_RDONLY, S_IWRITE | S_IREAD))
|
|
|
|
|
#define ht_cmtr_openwb(str) (f_open((str), O_CREAT | O_RDWR, S_IWRITE | S_IREAD))
|
|
|
|
|
#define ht_cmtr_openab(str) (f_open((str), O_CREAT | O_APPEND | O_RDWR, S_IWRITE | S_IREAD))
|
|
|
|
|
#define ht_cmtr_close(pfd) (f_close(pfd))
|
|
|
|
|
|
|
|
|
|
//<2F>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ߵ<EFBFBD>λת<CEBB><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//#define ENDIAN_CONIVER
|
|
|
|
|
|
|
|
|
|
// <20>꿪<EFBFBD><EABFAA> <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>д
|
|
|
|
|
#define CMTR_IOFILE
|
|
|
|
|
//#define CMTR_IOBUFFER
|
|
|
|
|
|
|
|
|
|
// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>txt<78><74><EFBFBD>ı<EFBFBD><C4B1>ļ<EFBFBD>
|
|
|
|
|
//#define CMTR_OUT_TXTFILE
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
#define DB_OPT_INSERT 1
|
|
|
|
|
#define DB_OPT_UPDATE 2
|
|
|
|
|
#define DB_OPT_DELETE 3
|
|
|
|
|
/************************************************************************************
|
|
|
|
|
* <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>recv\send<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r\w<EFBFBD>ȡ<EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* ht_read_cmtr_bufn/ht_read_cmtr_bufn - cmtr<EFBFBD>Ķ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @pfd: <EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>fd<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>buffer<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>
|
|
|
|
|
* @buf: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @count: <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
************************************************************************************/
|
|
|
|
|
#if defined(CMTR_IOFILE)
|
|
|
|
|
//typedef int _my_cmtr_ioptr;
|
|
|
|
|
#define ht_read_cmtr_bufn(pfd, buf, count) \
|
|
|
|
|
do { \
|
|
|
|
|
if (f_read((pfd), (buf), (count)) <= 0) { \
|
|
|
|
|
(pfd) = -1; \
|
|
|
|
|
} \
|
|
|
|
|
} while (0);
|
|
|
|
|
|
|
|
|
|
#define ht_write_cmtr_bufn(pfd, buf, count) \
|
|
|
|
|
do { \
|
|
|
|
|
if (f_write((pfd), (buf), (count)) <= 0) { \
|
|
|
|
|
(pfd) = -1; \
|
|
|
|
|
} \
|
|
|
|
|
} while (0);
|
|
|
|
|
|
|
|
|
|
#define ht_check_cmtr_ptr(pfd) \
|
|
|
|
|
(((pfd) != -1) && ((pfd) != 0))
|
|
|
|
|
|
|
|
|
|
#elif defined(CMTR_IOBUFFER)
|
|
|
|
|
//typedef u8* _my_cmtr_ioptr;
|
|
|
|
|
//typedef unsigned char* _my_cmtr_ioptr;
|
|
|
|
|
#define ht_read_cmtr_bufn(pfd, buf, count) \
|
|
|
|
|
do { \
|
|
|
|
|
memcpy((buf), (pfd), (count)); \
|
|
|
|
|
(pfd) += (count); \
|
|
|
|
|
} while (0);
|
|
|
|
|
|
|
|
|
|
#define ht_write_cmtr_bufn(pfd, buf, count) \
|
|
|
|
|
do { \
|
|
|
|
|
memcpy((pfd), (buf), (count)); \
|
|
|
|
|
(pfd) += (count); \
|
|
|
|
|
} while (0);
|
|
|
|
|
|
|
|
|
|
#define ht_check_cmtr_ptr(pfd) \
|
|
|
|
|
(((pfd) != -1) && ((pfd) != 0))
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************************************
|
|
|
|
|
* ht_read_cmtr_data/ht_write_cmtr_data - <EFBFBD><EFBFBD>ȡ/д<EFBFBD>벢<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>cmtr<EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
|
|
|
|
|
* @src: <EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>Ϊbuffer<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>
|
|
|
|
|
* @data: <EFBFBD><EFBFBD>ȡ/д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
|
|
|
|
* @count: <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ȡ/д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @counter: <EFBFBD><EFBFBD>ȡ/д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
************************************************************************************/
|
|
|
|
|
#define ht_read_cmtr_data(src, data, count, counter) \
|
|
|
|
|
do { \
|
|
|
|
|
if (ht_check_cmtr_ptr(src)) { \
|
|
|
|
|
ht_read_cmtr_bufn((src), (data), (count)); \
|
|
|
|
|
(counter) += (count); \
|
|
|
|
|
} \
|
|
|
|
|
} while (0);
|
|
|
|
|
|
|
|
|
|
#define ht_write_cmtr_data(src, data, count, counter) \
|
|
|
|
|
do { \
|
|
|
|
|
if (ht_check_cmtr_ptr(src)) { \
|
|
|
|
|
ht_write_cmtr_bufn((src), (data), (count)); \
|
|
|
|
|
(counter) += (count); \
|
|
|
|
|
} \
|
|
|
|
|
} while (0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#endif /* end __HT_IEC_61850_MACROS_H */
|
|
|
|
|
|
|
|
|
|
|