/******************************************************************************
** 文件名:  WholeLineScreenDefine.h
** 描 述:   全线免筛功能宏值及结构体定义
*******************************************************************************/
#ifndef WHOLE_LINE_SCREEN_DEFINE_H_
#define WHOLE_LINE_SCREEN_DEFINE_H_

#include "CommonTypes.h"
#include "EnvelopeDefine.h"


#define UNKNOWN_TRAIN_EXIST  (0x55u)       /* 集中区内存在隐藏车 */
#define UNKNOWN_TRAIN_UNEXIST  (0xaau)     /* 集中区内不存在隐藏车 */

#define ENTER_ERROR_FLAG (0x55u)           /* 入口检测异常 */
#define ENTER_OK_FLAG (0xaau)              /* 入口检测正常 */


#define WHOLE_LINE_SCREEN_VAILD (0x55u)    /* 全线免筛可执行 */
#define WHOLE_LINE_SCREEN_UNVAILD (0xaau)  /* 全线免筛不可执行 */

#define TMC_WLS_VALID (0x55u)    /* TMC具有全线免筛 */
#define TMC_WLS_UNVALID (0xaau)  /* TMC不具有全线免筛 */


/** 列车控制状态 */
#define OUT_CONTROL_STATUS (0x00u)       /* 不处在控制状态的车 */
#define IN_CONTROL_STATUS  (0x55u)       /* 处在控制状态的车，包括本集中区的CT和UCT */
#define OFFLINE_CONFIRM_STATUS (0xaau)   /* 处在下线待确认的车 */

/** 列车筛选状态 */
#define UNNEED_SCREEN (0xaau)    /** 前方未有隐藏车*/
#define NEED_SCREEN (0x55u)   /** 前方有隐藏车*/


#define MAX_UT_AC_CNT 41U     /** 最大UT计轴数量40 41为非法值*/
#define MAX_WLS_LOG_NUM 10000U	/*全线免筛日志缓存*/

/* 列车状态信息 */
typedef struct
{
	UINT8 controlStatus;    /** 列车控制状态 */
	UINT8 headNeedScreen;   /** 头端需要筛选 */
	UINT8 tailNeedScreen;   /** 尾端需要筛选 */
}WLTrainStatusInfoStruct;


/** 全线免筛状态信息结构体 */
typedef struct 
{
	UINT32 sendSeq;   /** 发送给TMC的免筛序列号 */
	UINT32 recvSeq;   /** 接收TMC的免筛序列号 */
	UINT8 WLScreenProcessFlag;  /** 全线免筛标志 */
	UINT8 WLScreenVaildFlag;  /** TMC发送的全线免筛标志 */
	UINT8 UTFlag;    /** 是否存在隐藏车标志 */
	UINT8 enterCheckFlag;  /** 入口检测标志 */
	UINT32 redunTime;     /** 冗余计时 */
	UINT8 UTACCnt;   /** UT计轴数量 */
	UINT16 UTACId[MAX_UT_AC_CNT];
	WLTrainStatusInfoStruct curTrainStatusInfo[LINE_MAX_TRAIN];   /** 列车状态信息 */
	WLTrainStatusInfoStruct lastTrainStatusInfo[LINE_MAX_TRAIN];   /** 上周期列车状态信息 */
}WLSreenInfoStruct;


/* 全线免筛信息汇报结构体--仅接口功能信息准备使用 */
typedef struct
{
	UINT32 sendSeq; 
	UINT8 UTFlag;    
	UINT8 enterCheckFlag;   
	UINT8 controlTrainCnt;                      /* 控制列车信息 */
	UINT16 controlTrainID[TRAIN_SUM_MAX_IN_OC];
	UINT8 offlineTrainCnt;                      /* 下线列车信息 */
	UINT16 offlineTrainID[TRAIN_SUM_MAX_IN_OC];
}WLScreenReportStruct;



/* 全线免筛信息接收结构体--仅接口功能信息缓存使用 */
typedef struct
{
	UINT32 recvSeq;
	UINT8 WLScreenVaildFlag;
	UINT8 WLTrainCnt;                    /** 全线受控列车信息 */
	UINT16 WLTrainID[LINE_MAX_TRAIN];
}WLScreenReciveStruct;

#endif