Files
microser/include/systrace.h

322 lines
12 KiB
C
Raw Normal View History

2025-01-16 16:17:01 +08:00
/**
* @file: $RCSfile: systrace.h,v $
* @brief: $System trace API definiens.
*
* @version: $Revision: 1.2 $
* @date: $Date: 2019/02/19 07:18:52 $
* @author: $Author: lizhongming $
* @state: $State: Exp $
*
* @latest: $Id: systrace.h,v 1.2 2019/02/19 07:18:52 lizhongming Exp $
*/
#ifndef _SAS_TRACE_H_
#define _SAS_TRACE_H_
#define SASLOG_DEBUG (0)
#define SASLOG_WARN (1)
#define SASLOG_ERROR (2)
#define ANSI_TEXT_NORMAL "0"
#define ANSI_TEXT_HIGHLIGHT "1"
#define ANSI_TEXT_BLINK "5"
#define ANSI_COLOR_BLACK "30m"
#define ANSI_COLOR_RED "31m"
#define ANSI_COLOR_GREEN "32m"
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
#define ANSI_COLOR_BROWN "33m"
#define ANSI_COLOR_BLUE "34m"
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
#define ANSI_COLOR_PINK "35m"
#define ANSI_COLOR_LIGHTBLUE "36m"
#define ANSI_COLOR_WHITE "37m"
#define ANSI_COLOR_NORMAL "0m"
#ifdef _OS_UNIX_
#define ERROR_HIGHLIGHT_BEGIN "\033[1m\033[31m\033[40m"
#define ERROR_HIGHLIGHT_END "\033[0m"
#define WARN_HIGHLIGHT_BEGIN "\033[32m\033[40m"
#define WARN_HIGHLIGHT_END "\033[0m"
#else
#define ERROR_HIGHLIGHT_BEGIN ""
#define ERROR_HIGHLIGHT_END ""
#define WARN_HIGHLIGHT_BEGIN ""
#define WARN_HIGHLIGHT_END ""
#endif
APR_DECLARE_DATA extern uint32_t g_addition_log;
APR_DECLARE_DATA extern int g_tmp_debug ;
//warn
#define echo_warn(s) \
echo_msg_warnex(__FILE__,__LINE__,("%s"),s)
#define echo_warn1(fmt,s0) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0))
#define echo_warn2(fmt,s0,s1) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1))
#define echo_warn3(fmt,s0,s1,s2) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2))
#define echo_warn4(fmt,s0,s1,s2,s3) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2),(s3))
#define echo_warn5(fmt,s0,s1,s2,s3,s4) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2),(s3),(s4))
#define echo_warn6(fmt,s0,s1,s2,s3,s4,s5) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2),(s3),(s4),(s5))
#define echo_warn7(fmt,s0,s1,s2,s3,s4,s5,s6) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2),(s3),(s4),(s5),(s6))
#define echo_warn8(fmt,s0,s1,s2,s3,s4,s5,s6,s7) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2),(s3),(s4),(s5),(s6),(s7))
#define echo_warn9(fmt,s0,s1,s2,s3,s4,s5,s6,s7,s8) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8))
#define echo_warn10(fmt,s0,s1,s2,s3,s4,s5,s6,s7,s8,s9) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9))
#define echo_warn11(fmt,s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9),(s10))
#define echo_warn12(fmt,s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11) \
echo_msg_warnex(__FILE__,__LINE__,(fmt),(s0),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9),(s10),(s11))
//err
#define echo_err(s,rv) \
echo_msg_errex(__FILE__,__LINE__,(rv),("%s"),(s))
#define echo_errg(s) \
echo_msg_errex(__FILE__,__LINE__,(APR_EGENERAL),("%s"),(s))
#define echo_err1(fmt,rv,s1) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1))
#define echo_err2(fmt,rv,s1,s2) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2))
#define echo_err3(fmt,rv,s1,s2,s3) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3))
#define echo_err4(fmt,rv,s1,s2,s3,s4) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3),(s4))
#define echo_err5(fmt,rv,s1,s2,s3,s4,s5) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3),(s4),(s5))
#define echo_err6(fmt,rv,s1,s2,s3,s4,s5,s6) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3),(s4),(s5),(s6))
#define echo_err7(fmt,rv,s1,s2,s3,s4,s5,s6,s7) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7))
#define echo_err8(fmt,rv,s1,s2,s3,s4,s5,s6,s7,s8) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8))
#define echo_err9(fmt,rv,s1,s2,s3,s4,s5,s6,s7,s8,s9) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9))
#define echo_err10(fmt,rv,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9),(s10))
#define echo_err11(fmt,rv,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9),(s10),(s11))
#define echo_err12(fmt,rv,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12) \
echo_msg_errex(__FILE__,__LINE__,(rv),(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9),(s10),(s11),(s12))
//msg
#define echo_msg(s) \
echo_msg_debugex(__FILE__,__LINE__,("%s"),(s))
#define echo_msg1(fmt,s1) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1))
#define echo_msg2(fmt,s1,s2) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2))
#define echo_msg3(fmt,s1,s2,s3) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3))
#define echo_msg4(fmt,s1,s2,s3,s4) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3),(s4))
#define echo_msg5(fmt,s1,s2,s3,s4,s5) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3),(s4),(s5))
#define echo_msg6(fmt,s1,s2,s3,s4,s5,s6) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3),(s4),(s5),(s6))
#define echo_msg7(fmt,s1,s2,s3,s4,s5,s6,s7) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7))
#define echo_msg8(fmt,s1,s2,s3,s4,s5,s6,s7,s8) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8))
#define echo_msg9(fmt,s1,s2,s3,s4,s5,s6,s7,s8,s9) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9))
#define echo_msg10(fmt,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9),(s10) )
#define echo_msg11(fmt,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9),(s10),(s11))
#define echo_msg12(fmt,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12) \
echo_msg_debugex(__FILE__,__LINE__,(fmt),(s1),(s2),(s3),(s4),(s5),(s6),(s7),(s8),(s9),(s10),(s11),(s12))
#define MON_SEND 0 /**< ͨѶ<CDA8><D1B6><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define MON_RECV 1 /**< ͨѶ<CDA8><D1B6><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define MON_COM 1 /**< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD> */
#define MON_TCP 2 /**< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>TCP */
#define MON_UDP 3 /**< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>UDP */
#define MON_LOG 4 /**< <20><>Ϣ<EFBFBD><CFA2><EFBFBD>͡<EFBFBD><CDA1><EFBFBD> */
#define LEVEL_NORMAL 1 /**< <20><><EFBFBD><EFBFBD>LOG<4F>ȼ<EFBFBD> */
#define LEVEL_WARN 2 /**< <20>澯LOG<4F>ȼ<EFBFBD> */
#define LEVEL_ERROR 3 /**< <20><><EFBFBD><EFBFBD>LOG<4F>ȼ<EFBFBD> */
#define MON_HEADER_LEN 22
#define MTRACEBUFLEN 3000 /**< ÿ<>ο<EFBFBD><CEBF><EFBFBD>Trace<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
typedef struct trace_t trace_t;
struct trace_t {
apr_pool_t *pool;
//apr_pool_t *addr_pool;
apr_socket_t *sockdes;
apr_sockaddr_t *addr;
apr_thread_mutex_t *mutex;
};
typedef struct LOGSTAS LOGSTAS;
struct LOGSTAS {
byte_t debug:1;
byte_t warn:1;
byte_t error:1;
byte_t log3:1;
byte_t log4:1;
byte_t log5:1;
byte_t res:2;
}ALIGNPACKED;
typedef struct log_config_t log_config_t;
struct log_config_t{
char *msg_cache;
LOGSTAS status;
uint32_t log_udp_ip;
uint32_t DiffHostFromIp;
};
#ifdef _OS_WIN32_
#pragma pack(push,1)
#endif
typedef struct monbuf_t monbuf_t;
struct monbuf_t {
byte_t sync_code[4]; /**< ͬ<><CDAC><EFBFBD><EFBFBD> EB 90 EB 90 */
byte_t ied_len; /**< װ<><D7B0><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD> */
byte_t orient; /**< <20><><EFBFBD>ӵķ<D3B5><C4B7><EFBFBD><EFBFBD><EFBFBD>MON_SEND / MON_RECV */
byte_t type; /**< <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ͣ<EFBFBD>MON_COM / MON_TCP / MON_UDP */
byte_t node_len; /**< <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD> */
uint32_t node_id; /**< <20>ڵ<EFBFBD><DAB5><EFBFBD> */
uint32_t ied_id; /**< װ<>ú<EFBFBD> */
uint32_t localhost; /**< TCP<43><50>UDPʱ<50><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>IP<49><50>ַ */
uint32_t remotehost; /**< TCP<43><50>UDPʱ<50><CAB1>ʾ<EFBFBD>Զ<EFBFBD>IP<49><50>ַ */
uint16_t localport; /**< TCP<43><50>UDPʱ<50><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF> */
uint16_t remoteport; /**< TCP<43><50>UDPʱ<50><CAB1>ʾ<EFBFBD>Զ˶˿ں<CBBF> */
uint32_t len; /**< <20><>Ч<EFBFBD><D0A7><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>(<28><><EFBFBD><EFBFBD>**data<74>ij<EFBFBD><C4B3><EFBFBD>) */
byte_t node_name[32]; /**< <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> */
byte_t ied_name[32]; /**< װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
byte_t serial_name[16]; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
byte_t serial_len; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD> */
byte_t data[MTRACEBUFLEN+10]; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> */
//<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>(uint32_t)<29><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}ALIGNPACKED;
#ifdef _OS_WIN32_
#pragma pack(pop)
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/**
* @brief <EFBFBD><EFBFBD>UNIX<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
* @param foreground ǰ<EFBFBD><EFBFBD>ɫ
* @param background <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
* @param str Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
*/
APR_DECLARE(void) echo_color(char * foreground,char * background,char * str);
APR_DECLARE(int) trace_driver_create(trace_t * t,char * ip,apr_port_t port,apr_pool_t * pool);
APR_DECLARE(int) trace_driver_destory(trace_t * t);
APR_DECLARE(int) trace_driver_send(trace_t * t,const char * msg, apr_size_t len);
APR_DECLARE(apr_status_t) create_log_handle(apr_pool_t * pool);
APR_DECLARE(log_config_t *) get_log_handle(void);
APR_DECLARE(void) echo_msg_debugex(char * file_name,int line_no,char *fmt,...);
APR_DECLARE(void) echo_msg_warnex(char * file_name,int line_no, char *fmt,...);
APR_DECLARE(void) echo_msg_errex(char * file_name,int line_no,apr_status_t rv, char *fmt,...);
APR_DECLARE(int) trace_data(byte_t type,
byte_t orient,
uint32_t localhost,
uint32_t localport,
uint32_t remotehost,
uint32_t remoteport,
const char *serial_name,
int serial_len,
uint32_t node_id,
const char *node_name,
int node_len,
uint32_t client_id,
uint32_t ied_id,
const char *ied_name,
int ied_len,
const char *buf,
int len,
uint32_t traceIp);
/**
* @brief <EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>͸<EFBFBD>ͨ<EFBFBD>ű<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD>
* @param type <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĶ˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>MON_TCP / MON_UDP
* @param orient <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MON_SEND / MON_RECV
* @param connect <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param node_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>
* @param node_name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ied_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ijIED<EFBFBD><EFBFBD>IED<EFBFBD><EFBFBD>
* @param ied_name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ijIED<EFBFBD><EFBFBD>IED<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param buf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
* @param client_id <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>
* @param traceIp <EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD>
*/
APR_DECLARE(void) trace_connect_buf(byte_t type,byte_t orient,void *connect,
uint32_t node_id,const char *node_name,uint32_t client_id,
uint32_t ied_id,const char *ied_name,
const char *buf,int len,uint32_t traceIp);
/**
* @brief <EFBFBD><EFBFBD>windows<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>͸<EFBFBD>ͨ<EFBFBD>ű<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD>
* @param orient <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MON_SEND / MON_RECV
* @param serial_port <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĴ<EFBFBD><EFBFBD>ں<EFBFBD>
* @param node_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>
* @param node_name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ied_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ijIED<EFBFBD><EFBFBD>IED<EFBFBD><EFBFBD>
* @param ied_name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ijIED<EFBFBD><EFBFBD>IED<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param buf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
* @param client_id <EFBFBD>ͻ<EFBFBD><EFBFBD>˽ڵ<EFBFBD><EFBFBD><EFBFBD>
* @param traceIp <EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD>
*/
APR_DECLARE(void) trace_wserial_buf(byte_t orient,int serial_port,
uint32_t node_id,const char *node_name,uint32_t client_id,
uint32_t ied_id,const char *ied_name,
const char *buf,int len,uint32_t traceIp);
/**
* @brief <EFBFBD><EFBFBD>linux<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>͸<EFBFBD>ͨ<EFBFBD>ű<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD>
* @param orient <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MON_SEND / MON_RECV
* @param serial_name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param node_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>
* @param node_name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ied_id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ijIED<EFBFBD><EFBFBD>IED<EFBFBD><EFBFBD>
* @param ied_name <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>NODE<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ijIED<EFBFBD><EFBFBD>IED<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param buf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
* @param client_id <EFBFBD>ͻ<EFBFBD><EFBFBD>˽ڵ<EFBFBD><EFBFBD><EFBFBD>
* @param traceIp <EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD>
*/
APR_DECLARE(void) trace_serial_buf(byte_t orient,const char *serial_name,
uint32_t node_id,const char *node_name,uint32_t client_id,
uint32_t ied_id,const char *ied_name,
const char *buf,int len,uint32_t traceIp);
APR_DECLARE(void) trace_log_buf(byte_t level,uint32_t m_id,uint32_t client_id,const char *m_name,int ied_len,const char *buf,int len,uint32_t traceIp);
APR_DECLARE(void) trace_tmp_debug(int node_id,char *str);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif