#ifndef _SOE_H_ #define _SOE_H_ #include "Appconfig.h" #define SOE_ID_MASK 0xC5 #define SOE_ID_ACK_NONE 0xFF #define SOE_ID_ACK_OK 0x00 #ifdef SOE_PARA_ALL_SAVE #define MAX_EVENT_NUMBER 1024 // 最大事件记录数,带全参数的soe个数不能超过1024 #else #define MAX_EVENT_NUMBER 1100 // 最大事件记录数, #endif #define MAX_VIP_NUMBER 512 //最大关键记录数,由于E2PROM大小限制,不能超过512 #define MAX_OPERATE_NUMBER 512 //最大操作记录数,由于E2PROM大小限制,不能超过512 #ifdef ADD_DEBUG_RECORD_FUN #define MAX_DEBUG_RECORD_NUMBER 512 //最大关键记录数,由于E2PROM大小限制,不能超过512 #else #define MAX_DEBUG_RECORD_NUMBER MAX_VIP_NUMBER #endif #define EXT_ARG_NUMBER 13 // 事件的类型 enum { SOE_TYPE_EV=1, // 事件 SOE_TYPE_YX, // 遥信 SOE_TYPE_DPI, // 双点,值为双点 SOE_TYPE_PLC, // PLC SOE_TYPE_LNK, // 级联,值为双点 SOE_TYPE_TST, // 测试点 SOE_TYPE_OPT, // 操作 SOE_TYPE_NUM, // 类型个数 }; #define SOE_TYPE_ACK SOE_TYPE_TST // 类型小于此的都是需要确认的事件 6 #define SOE_TYPE_MASK 0x0f // 事件类型屏蔽码 #define SOE_TYPE_VIP 0x10 // 关键事件 标志 //保存全参数 #define SOE_TYPE_DELAY_FHZ 0X20//等至开关分/合位,延迟保存SOE//#define SOE_TYPE_RSV2 0x20 // 保留位2 #define SOE_TYPE_RSV3 0x40 // 保留位3 SOE_TYPE_VIP #define SOE_TYPE_FAULT 0x80 // 保留位4 #define SOE_BUF_BITS 11//9->11 用于雪崩测试缓存不够 #define SOE_BUF_NUMBER (1<ev_type == SOE_TYPE_DPI || ev->ev_type == SOE_TYPE_LNK ) { return (ev->ev_value == SW_DI_TYPE_ON); } return ev->ev_value; } void soe_init(void); int soe_ev_set(u16 code,u8 v); int soe_yx2lp(u16 ev_code); u16 soe_lp2cp(u8 ev_type,u16 ev_code,s32 is_mix); void soe_record_ev (u16 code,u8 value,long v1,long v2,long v3 ); void soe_record_yx (u16 code,u8 value,struct timespec * ts); void soe_record_lnk(u16 code,u8 value,struct timespec * ts,s32 v1,bool bmix,u32 cp_s); void soe_record_dpi(u16 code,u8 value,struct timespec * ts); void soe_record_plc(u16 code,u8 value, u32 flag); void soe_record_tst(u16 code,u8 value); void soe_record_opt(u16 code,long v1); void soe_record_opt3(u16 code,long v1,long v2,long v3); int soe_get(u8 ch,EVENT_STRUCT *ev); void soe_ack(u8 chnl,u16 ack); void soe_save(void); bool soe_check(u32 code); void soe_clear_ev(void); void soe_clear_opt(void); #endif