/******************************************************************************
版权所有：	
文件名称：	defineSys.h
文件版本：	01.01
创建作者：	邓良基
创建日期：	2019-8
功能说明：	
其它说明：	增加系统定义宏，用于区分地区&客户个性化需求等，宏定义一般在makefile -D+(宏)打开
修改记录：
*/

#ifndef _DEFINE_SYS_H
#define _DEFINE_SYS_H

#define DEVICE_VERSION_INFORMATION "NW24_260415_001" // NW2022意思是按照22年南网标准文件（总调）来做的

#ifdef ___defineSys____//！！！此宏定义不开启，以下宏不直接开启，只用于注释显示

//需要的时候打开宏重新编译
#define DISP_SET_CH_T3       // 维护工具&&液晶显示重合闸三次
#define DISP_MEA_CN          // 液晶遥测名称显示中文

#define SOE_PARA_ALL_SAVE              // soe 全参数处理有效
#define SOE_RECORD_DELAY               // SOE延迟保存
#define KZ_OUT_TT                      // 控制出口硬压板
#define COMM_STATION_NR                // 定义南瑞主站适应模式
#define IECTABLE_NEWDPI_V106           // 转发表配合工具完成合并点和遥信单双点配合版本  0X01010106
#define IECTABLE_NEWTOOL_OLE           // 转发表配合工具使用第二个版本 遥信点索引号改为二字节 和 IECTABLE_NEWDPI_V106 不允许同时使用
#define EV_GL_STATR                    // 过流启动SOE
#define FUNC_CHZ_CHARGE_TIME		   // 重合闸充电通用一个定值，不管几次重合闸
#define YX_DI_ERROR                    // 遥信硬件自检错误
#define HISTORY_DB                     // 历史文件数据库
#define DO_KOUT_CHECK                  // 开出反校
#define DO_KOUT_CHECK_PRESET           // 开出反校 单预置
#define YB_STHD_CHECK                  // 软硬压板不对应检测
#define FA_OC_COUNT                    // FA 过流脉冲计数功能
#define YK_SOFT_YB                     // 遥控软压板
#define YX_RESET_TIME                  // 遥信复归时间 注意！！！跟 SOE_RECORD_DELAY 不允许同时使用
#define XDL_ZT                         // 小电流接地
#define YK_FA_ENBLE                    // 主站需要具备遥控闭锁以及解锁开关自动合闸的功能，由主站发起的闭锁需要由主站解锁，即其他情况的解锁都不能消除此遥控闭锁。
#define IEC_QDS_HAVE                   // 101/104品质描述压板(与QDS_TT二选一)
#define YK_FG_FAJS                     // 遥控复归+FA解锁
#define YK_FA_S_L_ENBLE                // 分段联络遥控
#define YD_TEST_REALTIME_VALUE_DISPLAY // 远动测试遥信、遥测数据显示
#define SEC_SETVALUE_4                 // 4个定值区
#define SEC_SETVALUE_7                 // 7个定值区
#define SW_FAIL_SINGLE_OUT             // 开关失灵 开关拒动发送失灵信号(动作失灵继电器)
#define DC_OLLECT_NOT_156US_LOOPC      // DC采样在非156us循环中使用
#define ADD_DEBUG_RECORD_FUN           // 增加调试记录功能选项
#define ADD_DEBUG_RECORD_AUTO_SHOW_FUN // 增加调试记录功能自动显示功能
#define MIN_SIGNAL_SAMPLE              // 小信号采样
#define SW_AC_I0S_SAMPLE               // I0S电流采样
#define FA_PL_PJ                       // FA频率判据(内部定值):频率在49~50.8Hz的频率才认为有效,可参与判得电
#define YC_QUANTITY                    // 每间隔遥参数量可通过内部定值设定(内部定值)
#define VOLT_ADAPTIVE_FACTOR           // 电压系数自适应
#define BATTERY_WITH_COMM              // 带通讯电源模块
#define BATTERY_BP_L500			       // 无锡市欧瑞杰TX-BPL500W24D
#define FUN_JDXX                       // 功能：小电流接地 版本:V1.0
#define DISP_LIST_NUM                  // 列表类型定值显示定值选项的序号(如:"0:退出"、"1:投入")
#define GEN_QUEUE                      // 录波相关
#define RCD_STRAN_M                    // 录波传输
#define RCD_STRAN_S                    // 录波传输
#define FUN_FUXI_ESAM                  // 南网加密芯片
#define FUNC_GET_RD_ONLY               // lcd_menu可配置只读定值
#define FUNC_YT_HARD_YB                // lcd_menu新增关键硬件遥信（如常规保护硬压板、FA硬压板等）
#define FUNC_SEL_BAT_MODULE            // 可选贵州、佛山电源模块(前提开启宏BATTERY_WITH_COMM)
#define MODBUS_YX_REG_NUM              // 完善modbus满足广州思泰电源模块规约
#define FUNC_ENCRY_IN_ONE_SERIAL       // 串口1可同时接收处理纬德模块转发的3个主站的数据
#define FUNC_YT_NO_ID                  // 遥调lcd_menu中未配置的地址时，默认回0
#define FUNC_DRIVE_JY                  // 不停电传动功能――用于揭阳
#define FUNC_DRIVE                     // 不停电传动功能
#define FUN_ADD_CONFIG_DIR             // 增加文件远方交互目录
#define FUNC_RESET_EQU                 // 通过断开接入电源的常闭继电器重启装置(注意:实测实际开出通道的脉宽时间不应低于600ms)
#define RCD_STRAN_M_EN                 // 级联录波主站使能
#define YPARA_LINK_S_EN                // 子站定值通知上送
#define FUN_YPARA_CFG_NOTY             // 参数事件
#define YPARA_LINK                     // 级联遥参
#define YPARA_LINK_S                   // 级联遥参
#define FUN_DIMER_LINK                 // 级联点支持合并
#define IEC_RESET_PROCESS              // 复位命令重启装置
#define FIXAREA_TYPE_V2                // 定值区号使用V2版本（当前、待召唤、待执行）
#define IEC_SETTIME_ANS_WEK            // 对时报文回复带周
#define IEC_YK_MORE_PRESET             // 遥控多次预置
#define DFA_MESH_ERR_SOE               // 智能分布式网线拔出报soe
#define PRO_UZ_START_REC               // 零压启动重合器
#define PRO_AL_LOCK_HZ                 // 解列动作闭锁合闸
#define PRO_AL_RESET_FA                // 解列动作复归FA
#define PRO_PT_LL_NC                   // 非Fa联络 无压有流动作 PT断线告警
#define FIXAREA_VERSION_T              // 定值区号版本2 待召唤定值区号、待执行定值区号
#define PUB_SET_SECTION                // 定义之后公共定值在定值区概念里面管辖
#define IEC_NOLINK_NO_CALLYX           // 级联无响应遥信
#define GOOSE_NETTYPE_SET              // goose网络类型设置
#define TMP_CHIP_AHT20                 // 温湿度芯片AHT20
#define IO_CHIP_CH423S                 // 扩展IO芯片
#define PRO_YB_LOCATION_IN_PUB         // 功能压板位于公共定值

//定制功能
#define CUSTOMIZE_BZT			//定制功能-备自投

#define GD_AREA_ZHONGSHAN       // 中山局要求
#define GD_AREA_ZHONGSHAN_2020  // 中山局2020要求
#define GD_AREA_ECZD_2020       // 2020广东配网终端二次功能指导意见
#endif

#if defined (CPU_AM335X) || defined (CPU_FUXI)
#define MODE_LITTLE_ENDIAN		// 存储小端模式
#endif

#if defined (CPU_AM335X)
#define	LINUX_KERNEL_APP
#else
#define	LINUX_USER_APP
#endif

#if defined CPU_FUXI
#define APP_NAME		"dtu_t536"
#else		
#define APP_NAME		"dftu.ko"
#endif

#if !defined CPU_FUXI && !defined CPU_AM335X
#define ENCRYPT_SM2   // SM2加密
#define ENCRYPT_X509  // X509加密
#define LINELOSS_FILE // 线损文件功能
#define GPRS_FUNC     // GPRS功能
#define SNTP_FUNC     // SNTP功能
#endif

// 默认开启以下宏定义开关
#define PASSWORD_4_STR                 // 默认密码四位数
#define COMM_STATION_NR                // 定义南瑞主站适应模式	,遥控报文优先上送
#define YD_TEST_REALTIME_VALUE_DISPLAY // 远动测试遥信、遥测数据显示
#define FUNC_FIT_QOS                   // 101/104通讯的预置取消报文不判断qos(设定命令限定词)位
#define GEN_QUEUE                      // 录波相关
#define RCD_STRAN_M                    // 录波传输
#define RCD_STRAN_S                    // 录波传输
#define SOE_RELINK_DISCOS              // soe续传不传cos
#define FUNC_MORE_PRESET               // 支持遥调时多次预置,固化
#define FUNC_PRINT_PT_ERR              // PT断线时应报相关打印信息
#define SOE_PARA_ALL_SAVE              // 故障断面所有遥测全部显示
#define IO_CHIP_CH423S                 // 扩展IO芯片
#define DO_KOUT_CHECK_PRESET           // 开出反校 单预置
#define YX_RESET_TIME                  // 遥信复归时间 注意！！！跟 SOE_RECORD_DELAY 不允许同时使用
#define YC_QUANTITY			           // 每间隔遥参数量可通过内部定值设定
#define IECTABLE_NEWTOOL_OLE           // 转发表配合工具使用第二个版本 遥信点索引号改为二字节 和 IECTABLE_NEWDPI_V106 不允许同时使用
#define EV_GL_STATR                    // 过流启动SOE

//区分地区&客户个性化需求定义
#if defined  GD_AREA_ECZD_2020    	// 配电自动化站所终端标准化技术规范书 2025版 V1.0
    #define VER_NUM 0x01001   // 应用版本号 高8位小数点前，低8位小数点后 0x01001 01.001
    #define XDL_ZT            // 小电流接地
    #define RCD_STRAN_M       // 录波传输
    #define RCD_STRAN_S       // 录波传输
    #define FUNC_MODE_JS      // 切换模式解除闭锁
    #define FUNC_DRIVE        // 不停电传动功能
    #define FUNC_MORE_PREREAD // 支持遥调时多次读取
    #define FUNC_MORE_PRESET  // 支持遥调时多次预置,固化
    #define YB_AUTO_SELECT    // 在没配置硬压板的时自动选择软压板执行
    #define IEC_QDS_HAVE
    #define YK_FA_S_L_ENBLE           // 分段联络遥控
    #define DC_OLLECT_NOT_156US_LOOPC // DC采样在非156us循环中使用
    #define FUNC_CHZ_CHARGE_TIME      // 重合闸充电通用一个定值，不管几次重合闸

#elif defined GD_AREA_ZHONGSHAN	//中山局要求
 	#ifdef __IEC61850_GOOSE_FUNC__
		#define VER_NUM 0x01001  // 应用版本号 高8位小数点前，低8位小数点后 0x01001 01.001
	#else
		#define VER_NUM 0x01001  // 应用版本号 高8位小数点前，低8位小数点后 0x01001 01.001
	#endif
	#define GEN_QUEUE	
	#define RCD_STRAN_M			// 录波传输
	#define RCD_STRAN_S			// 录波传输

#elif defined GD_AREA_ZHONGSHAN_2020	//中山局2020要求
	#define VER_NUM 0x01001  // 应用版本号 高8位小数点前，低8位小数点后 0x01001 01.001
	#define PUB_SET_SECTION // 定义之后公共定值在定值区概念里面管辖
    #define ADD_DEBUG_RECORD_FUN    //增加调试记录功能选项
    #define ADD_DEBUG_RECORD_AUTO_SHOW_FUN    //增加调试记录功能自动显示功能
	#define GEN_QUEUE	
	#define RCD_STRAN_M			// 录波传输
	#define RCD_STRAN_S			// 录波传输

/*！！！！！注意！！！！！：往上↑↑↑↑↑↑↑↑地区版本定义VER_NUM不允许超32101/32201(goose)*/
#else
    #error 未定义地区宏 export _AREA=-D******* 
#endif

#ifdef FUN_JDXX						//小电流接地功能
	#define MIN_SIGNAL_SAMPLE		//小信号采样
	#define SW_AC_I0S_SAMPLE		//I0S电流采样
#endif

#ifdef YC_QUANTITY 		//每间隔遥参数量可通过内部定值设定
	#define FUNC_YT_NO_ID		//遥调lcd_menu中未配置的地址时，默认回0
#endif

#if defined FUNC_DRIVE && defined FUNC_DRIVE_JY
	#error : FUNC_DRIVE and FUNC_DRIVE_JY cannot be set concurrently,please check.
#endif

//伏羲暂不支持can、伏羲加密S1芯片
#ifdef  CPU_FUXI
	#undef CAN_SLAVE_BOARD
	#undef METERING_ENERGY
	#undef ADD_MULTIPLE_FILE_WR_FUN
	#undef FUN_FUXI_ESAM
	#undef FUNC_S1_BUTTON
#endif

#define BATTERY_WITH_COMM		//带通讯电源模块
#define YB_AUTO_SELECT			//在没配置硬压板的时自动选择软压板执行

#endif /* _DEFINE_SYS_H */
