/****************************************************************************************************
* 文件名   :  TrainDefine.h
* 版权说明 : 交控科技股份有限公司
* 版本号 : 1.0
* 创建时间 : 2021.06.15
* 作者 : OC组
* 功能描述 : 列车管理模块定义头文件
* 使用注意 :
*
* 修改记录 :
*
**************************************************************************************************/
#ifndef TRAIN_DEFINE_H_
#define TRAIN_DEFINE_H_

#ifdef __cplusplus
	extern "C"
{
#endif
#include "commontypes.h"

#define TRAIN_SUM_MAX					((UINT8)255U)					 /*列车数量*/

#define TRAIN_COMM_STATE_GOOD			((UINT8)0x55U)					 /*与列车通信良好*/
#define TRAIN_COMM_STATE_BAD			((UINT8)0xAAU)					 /*与列车通行不好*/
#define TRAIN_COMM_STATE_UNKNOWN		((UINT8)0xFFU)					 /*与列车通信状态未知*/

#define TRAIN_DIR_UP				    ((UINT8)0x55U)			         /*列车运行方向为上行*/
#define TRAIN_DIR_DOWN				    ((UINT8)0xAAU)                    /*列车运行方向为下行*/
#define TRAIN_DIR_DEF				    ((UINT8)0xffU)                    /*列车运行方向为默认*/

#define TRAIN_LEVEL_UR				    ((UINT8)0x03U)					 /*列车运行等级UR*/
#define TRAIN_LEVEL_ABL				    ((UINT8)0x04U)					 /*列车运行等级ABL*/
#define TRAIN_LEVEL_VBTC			    ((UINT8)0x01U)					 /*列车运行等级CBTC*/
#define TRAIN_LEVEL_ITC			    ((UINT8)0x02U)					 /*列车运行等级ITC*/

#define TRAIN_LEVEL_BACKUP_LIANXU				    ((UINT8)0x01U)					 /*连续式列车控制级别*/
#define TRAIN_LEVEL_BACKUP_BLOCK				    ((UINT8)0x02U)					 /*点式列车控制级别*/
#define TRAIN_LEVEL_BACKUP_CI				    ((UINT8)0x03U)					 /*联锁控制级别*/
#define TRAIN_LEVEL_BACKUP_ABL  			    ((UINT8)0x04U)					 /*ABL控制级别*/
#define TRAIN_LEVEL_BACKUP_UNKNOWN 			    ((UINT8)0xFFU)					 /*默认控制级别*/

#define TRAIN_SPEED_DIR_FORWARD			((UINT8)0x55U)					 /*IVOC到CI列车速度方向向前*/
#define TRAIN_SPEED_DIR_BACKWARD		((UINT8)0xAAU)					 /*IVOC到CI列车速度方向向后*/

#define TRAIN_ID_MIN					((UINT16)0x1400U)				 /*列车ID最小值*/
#define TRAIN_ID_MAX					((UINT16)0x14FFU)				 /*列车ID最大值*/
#define TRAIN_ID_INVAL					((UINT16)0xFFFFU)				 /*列车ID默认值*/

#define TRAIN_IN_CTRL_ZONE				((UINT8)0x55U)					 /*列车在本控区*/
#define TRAIN_NOT_IN_CTRL_ZONE			((UINT8)0xAAU)					 /*列车不在本控区*/

#define TRAIN_SPEED_BACK				((UINT8)0xAAu)					 /* 列车向后 */
#define TRAIN_SPEED_FRONT				((UINT8)0x55u)					 /* 列车向前 */

#define TRAIN_SPEED_ZERO_YES			((UINT8)0x55U)					 /*列车零速*/
#define TRAIN_SPEED_ZERO_NO				((UINT8)0xAAU)					 /*列车非零速*/

#define TRAIN_HEAD_FLAG_YES				((UINT8)0x55u)					/*列车安全车头处于不连通岔区，且该岔区占用*/
#define TRAIN_HEAD_FLAG_NO				((UINT8)0xAAu)					/*列车安全车头不处于占用且不连通的岔区*/

#define CI_IVOC_HEAD_SCREEN_PASS		((UINT8)0x55U)		  /*列车前筛通过*/
#define CI_IVOC_HEAD_SCREEN_UNKNOW		((UINT8)0xAAU)		  /*列车前筛未通过*/

#define CI_IVOC_TAIL_SCREEN_PASS		((UINT8)0x55U)		  /*列车后筛通过*/
#define CI_IVOC_TAIL_SCREEN_UNKNOW		((UINT8)0xAAU)		  /*列车后筛未通过*/

#define VOBC_CI_GROUP_HEAD				((UINT8)0x55u)			/*本车为编组前车*/
#define VOBC_CI_GROUP_TAIL				((UINT8)0xAAu)			/*本车为编组后车*/
#define VOBC_CI_GROUP_INVAL				((UINT8)0x5Au)			/*本车为非编组车*/

#define VOBC_CI_GROUP_NO				(1u)					/*非编组*/
#define VOBC_CI_GROUP_SET				(2u)					/*编组建立*/
#define VOBC_CI_GROUP_RUN				(3u)					/*编组运行*/
#define VOBC_CI_GROUP_REVERSE			(4u)					/*编组折返*/
#define VOBC_CI_GROUP_EXIT				(5u)					/*编组解编*/

#define MAX_TRAIN_ON_AC					(10u)					/* 单个计轴区段占压列车最大数量 */
#define TOA_TYPE_CT						(1u)					/* CT列车 */
#define TOA_TYPE_UT						(2u)					/* UT列车 */
#define TOA_TYPE_INVALID				(0u)					/* 列车类型无效 */
#define MAX_AC_IN_TRAIN					(20u)					/* 列车最大占压计轴区段数量 */

#define TRAIN_SLEEP_YES					((UINT8)0x55u)			/* 列车处于休眠状态 */
#define TRAIN_SLEEP_NO					((UINT8)0xaau)			/* 列车未处于休眠状态 */

#define TRAIN_MODE_DEFAULT				((UINT8)0)				/*默认值*/
#define TRAIN_MODE_RM					((UINT8)1)				/*RM模式*/
#define TRAIN_MODE_CM					((UINT8)2)				/*CM模式*/
#define TRAIN_MODE_AM					((UINT8)3)				/*AM模式*/
#define TRAIN_MODE_EUM					((UINT8)4)				/*EUM模式*/
#define TRAIN_MODE_RD					((UINT8)5)				/*RD模式*/
#define TRAIN_MODE_AR					((UINT8)6)				/*AR模式*/
#define TRAIN_MODE_FAM					((UINT8)7)				/*FAM模式*/
#define TRAIN_MODE_CAM					((UINT8)8)				/*CAM模式*/
#define TRAIN_MODE_RRM					((UINT8)9)				/*RRM模式*/
#define TRAIN_MODE_VCM					((UINT8)10)				/*VCM模式*/

#define TRAIN_HEAD_CONFIRM_YES			((UINT8)0x55u)			/*人工前筛确认*/
#define TRAIN_HEAD_CONFIRM_NO			((UINT8)0xffu)			/*人工前筛未确认(默认值)*/

#define TRAIN_TAIL_CONFIRM_YES			((UINT8)0x55u)			/*人工后筛确认*/
#define TRAIN_TAIL_CONFIRM_NO			((UINT8)0xffu)			/*人工后筛未确认(默认值)*/

#define TRAIN_ATS_CONFIRM_YES			((UINT8)0x55u)			/*远程筛选确认*/
#define TRAIN_ATS_CONFIRM_NO			((UINT8)0xffu)			/*远程筛选未确认(默认值)*/

#define TRAIN_WAKE_SUCCESS				((UINT8)1)				/*列车唤醒成功*/
#define TRAIN_WAKE_PROCESS				((UINT8)2)				/*唤醒过程中*/
#define TRAIN_WAKE_FAILURE				((UINT8)3)				/*唤醒失败*/
#define TRAIN_WAKE_DEFAULT				((UINT8)255)			/*默认值*/

#define TRAIN_CMD_DYM_YES				((UINT8)0x55u)			/*有动态测试请求命令*/
#define TRAIN_CMD_DYM_NO				((UINT8)0xaau)			/*无动态测试请求命令*/

#define TRAIN_DYN_RPL_AGREE				((UINT8)0x55u)			/*动态测试同意*/
#define TRAIN_DYN_RPL_REFUSE			((UINT8)0xaau)			/*动态测试拒绝*/
#define TRAIN_DYN_RPL_FAILURE			((UINT8)0xccu)			/*动态测试失败*/
#define TRAIN_DYN_RPL_DEFAULT			((UINT8)0xffu)			/*默认值*/

#define TRAIN_DYN_TEST_SUM_MAX			((UINT8)20u)			/*动态测试空间大小*/

#define TRAIN_SCREEN_DEFAULT			((UINT8)0x00u)			/*不需要远程/人工筛选*/
#define TRAIN_SCREEN_ATS				((UINT8)0x01u)			/*需远程筛选*/
#define TRAIN_HEAD_SCREEN_IVOC			((UINT8)0x02u)			/*需人工前筛*/
#define TRAIN_TAIL_SCREEN_IVOC			((UINT8)0x03u)			/*需人工后筛*/
#define TRAIN_SCREEN_IVOC				((UINT8)0x04u)			/*需人工筛选*/

#define TRAIN_SCREEN_TYPE_BK			((UINT8)1u)				/*回库筛选*/
#define TRAIN_SCREEN_TYPE_LU			((UINT8)2u)				/*唤醒筛选*/
#define TRAIN_SCREEN_TYPE_POSTION_LOST  ((UINT8)3u)				/*监督位置无效筛选*/

#define TRAIN_SS_YES					((UINT8)0x55u)			/*列车停准停稳*/
#define TRAIN_SS_NO						((UINT8)0xaau)			/*列车未停准停稳*/

#define TRAIN_SLEEP_CANCLE_YES			((UINT8)0x55u)			/*能清除休眠车*/
#define TRAIN_SLEEP_CANCLE_NO			((UINT8)0xaau)			/*不能清除休眠车*/

#define TRAIN_INCLUDE_RES_MAX_SUM       ((UINT8)120U)			/*列车包含逻辑区段资源数量最大值*/

#define EA_SECTION_MAX_NUM				((UINT8)254u)			/*区间疏散防护区域包含区段最大数量*/

#define EA_PROTECT_BUILD				0x55U					/* 区间疏散防护区域建立请求 */
#define EA_PROTECT_DEFAULT				0xFFU					/* 区间疏散防护区域命令无效 */
#define EA_PROTECT_BUILD_Y				0x55U					/* 同意建立区间疏散停车区域 */
#define EA_PROTECT_BUILD_N				0xAAU					/* 不同意建立区间疏散停车区域 */

#define EA_IS_BUILDED					0x55u					/* 区间疏散防护区域已建立 */
#define EA_IS_NOT_BUILDED				0xAAu					/* 区间疏散防护区域未建立 */

#define EA_MAX_NUM						20u						/* 区间疏散最大数量 */

#define TRAIN_ABL_LOGSEC_SUM			100U					/*ABL列车脚下包含的进路内的逻辑区段数量*/
#define TRAIN_ABL_RETURNLOGSEC_SUM		10U						/*ABL列车查询范围内的折返逻辑区段数量*/
#define TRAIN_ABL_SPKS_SUM				30U						/*ABL列车查询范围内的SPKS数量*/
#define TRAIN_ABL_PSD_SUM				10U						/*ABL列车查询范围内的PSD数量*/
#define TRAIN_ABL_ESB_SUM				10U						/*ABL列车查询范围内的ESB数量*/
#define TRAIN_ABL_SWITCH_SUM			100U					/*ABL列车查询范围内的道岔数量*/
#define TRAIN_ABL_PROSEC_SUM			20U						/*ABL列车查询范围内的保护区段数量*/
#define TRAIN_ABL_XIANSUSEC_SUM			100U					/*ABL列车查询范围内的限速区段数量*/
#define TRAIN_ABL_FLOODGATE_SUM			10U						/*ABL列车查询范围内的防淹门数量*/
#define TRAIN_ABL_ALLROUTE_SUM			10U						/*ABL列车前方接近以及车脚下的所有进路数量*/

#define TRAIN_ABL_ROUTE_FLAG_YES		0x55U					/*发送后备列车的进路为车脚下进路*/
#define TRAIN_ABL_ROUTE_FLAG_NO			0xAAU					/*发送后备列车的进路不为车脚下进路*/

#define TRAIN_ACTIVE_NONE				0u						/* 无激活端 */
#define TRAIN_ACTIVE_ONE				1u						/* 一端激活 */
#define TRAIN_ACTIVE_TWO				2u						/* 二端激活 */
#define TRAIN_ACTIVE_ALL				3u						/* 双端激活 */

#define TRAIN_RRM_RQST_YES				0x55u					/* 申请进入RRM */
#define TRAIN_RRM_RQST_NO				0u						/* 无申请 */

#define TRAIN_RRM_YES					0x55u					/* RRM允许 */
#define TRAIN_RRM_NO					0xaau					/* RRM不允许 */
#define TRAIN_RRM_DEFAULT				0xffu					/* 默认值 */

/*与510保持一致，错误原因顺序不能随便改*/
#define TRAIN_RRM_RESON_02				0x02u					/* 全线紧急制动有效，不允许RRM */
#define TRAIN_RRM_RESON_05				0x05u					/* 由于进路未办理，不允许RRM */
#define TRAIN_RRM_RESON_06				0x06u					/* 区段状态异常，不允许RRM */
#define TRAIN_RRM_RESON_07				0x07u					/* SPKS激活，不允许RRM */
#define TRAIN_RRM_RESON_08				0x08u					/* EMP按下，不允许RRM */
#define TRAIN_RRM_RESON_09				0x09u					/* 站台门状态打开，不允许RRM */
#define TRAIN_RRM_RESON_0A				0x0au					/* 道岔异常，不允许RRM */
#define TRAIN_RRM_RESON_0B				0x0bu					/* 终点信息不正确，不允许RRM */
#define TRAIN_RRM_RESON_0C				0x0cu					/* 由于防淹门关闭，不允许RRM   */
#define TRAIN_RRM_RESON_0D				0x0du					/* 列车当前已到达站台，不允许RRM */
#define TRAIN_RRM_RESON_0E				0x0eu					/* 列车当前处于站台轨，不允许RRM */
#define TRAIN_RRM_RESON_15				0x15u					/* 未得相邻TIOC的RRM授权，不允许RRM */
#define TRAIN_RRM_RESON_16				0x16u					/* 列车不属于正线\有前端可疑，不允许RRM */
#define TRAIN_RRM_RESON_17				0x17u					/* 列车激活端与预期不一致，不允许RRM */
#define TRAIN_RRM_RESON_FF				0xffu					/* 默认值，表示RRM授权没有不允许 */

#define TRAIN_DERAIL_YES				0x55u					/* 列车脱轨 */
#define TRAIN_DERAIL_NO					0xaau					/* 列车未脱轨 */


#define TRAIN_RRM_OTHERCI_ALLOW				0x55u				/* 跨控区远程RM-目标TIOC允许*/
#define TRAIN_RRM_OTHERCI_NOT_ALLOW			0xaau				/* 跨控区远程RM-目标TIOC不允许*/
#define TRAIN_RRM_LOCALCI_APPLY				0x55u				/* 跨控区远程RM-源TIOC申请*/
#define TRAIN_RRM_LOCALCI_NOT_APPLY		    0xaau				/* 跨控区远程RM-源TIOC不申请*/

#define TRAIN_ITE_RESULT_YES			0xaau					/* ITE识别为有列车 */
#define TRAIN_ITE_RESULT_NO				0x55u					/*  ITE识别为无列车 */

#define TRAIN_NVRAM_POS_FLAG_YES				0x55u					/* 列车使用NVRAM位置 */
#define TRAIN_NVRAM_POS_FLAG_NO					0xaau					/* 列车未使用NVRAM位置 */

#define HEAD_TRAIN_LOC_ATP				   0x55u	 /*前车位置标识-ATP*/			
#define HEAD_TRAIN_LOC_ITE				   0xaau	 /*前车位置标识-ITE*/			
#define HEAD_TRAIN_LOC_DEFAULT			   0xffu	 /*前车位置标识-默认*/			

#define TRAIN_INC_ITE_SUM_MAX	2U		/* 列车包含的ITE数量最大值 */

#define TRAIN_LOC_REV_ROUTE_FLAG_NO				   0x55u	 /*列车车身所处位置反向进路标识-列车不在反向进路*/			
#define TRAIN_LOC_REV_ROUTE_FLAG_YES			   0xaau	 /*列车车身所处位置反向进路标识-列车在反向进路*/			
#define TRAIN_LOC_REV_ROUTE_FLAG_NONE			   0xffu	 /*列车车身所处位置反向进路标识-默认*/	

#define TRAIN_VIR_SCREEN_PASS_FLAG_VALID		  0x55u					/* 列车虚拟筛选标志有效 */
#define TRAIN_VIR_SCREEN_PASS_FLAG_INVALID		  0xaau					/* 列车虚拟筛选标志无效 */

/*列车位置监督状态*/
#define TRAIN_POS_MONITOR_VALID			(UINT8)0x55U	 /*列车位置监督有效*/
#define TRAIN_POS_MONITOR_INVALID	    (UINT8)0xAAU	 /*列车位置监督无效*/
#define TRAIN_POS_MONITOR_DIFF	        (UINT8)0xCCU	 /*列车位置监督不一致*/

/*列车可删除休眠车包络标志*/
#define TRAIN_DEL_SLEEP_ENV_VALID			(UINT8)0x55U	 /*可删除休眠车包络标志有效*/
#define TRAIN_DEL_SLEEP_ENV_INVALID	        (UINT8)0xAAU	 /*可删除休眠车包络标志无效*/


#define  TRAIN_FLYALARM_SECNUM_MAX	        (UINT8)10U		/*列车飞车报警计轴最大数量*/
#define SHUT_DOWN_TRAIN_NUMMAX				(UINT8)253u     /*飞车宕机最大列车数目*/

/*列车区间疏散命令状态*/
#define TRAIN_EA_CMD_STATE_VALID			(UINT8)0x55U	 /*列车区间疏散命令有效*/
#define TRAIN_EA_CMD_STATE_INVALID	        (UINT8)0xAAU	 /*列车区间疏散命令无效*/

/*列车向后跳跃申请状态*/
#define TRAIN_JUMP_BACK_STATE_VALID			(UINT8)0x55U	 /*列车申请向后跳跃 或 RC允许向后跳跃*/
#define TRAIN_JUMP_BACK_STATE_INVALID	        (UINT8)0xAAU	 /*列车未申请向后跳跃 或 RC不允许向后跳跃*/
#define TRAIN_JUMP_BACK_STATE_NONE       (UINT8)0x00U	 /*RC向后跳跃申请回复默认值*/

#ifdef __cplusplus
}
#endif

#endif