/********************************************************
*                                                                                                            
* 文 件 名： ParsePackVobcData.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2012-03-28
* 作    者： 联锁组
* 功能描述： Vobc数据解析头文件  
* 函数包括：
* 使用注意：
* 修改记录：   
*
********************************************************/ 

#ifndef _PARSE_PACK_VOBC_DATA_H_
#define _PARSE_PACK_VOBC_DATA_H_


#include "CommonTypes.h"
#include "Convert.h"
#include "ParsePackDefine.h"
#include "ParsePackCommon.h"
#include "CiInterfaceDefine.h"
#include "../Mask/MaskDefine.h"
#include "../Mask/MaskConfigDataManage.h"
#include "../2oo2/2oo2InterfaceDataManage.h"
#include "../DataManage/DeviceDataManage.h"
#include "../ParsePack/ParsePackAtsData.h"
#include "../Relay/RelayConfigDataManage.h"
#include "../Relay/RelayDataManage.h"
#include "../ParsePack/ParsePackPlatformData.h"
#include "../PSD/PSDConfigDataManage.h"
#include "../PSD/PSDDataManage.h"
#include "../WashMachine/WashMachineConfigDataManage.h"
#include "../WashMachine/WashMachineDataManage.h"
#include "../System/SystemParameterManage.h"
#include "../IO/DeviceRelayDataProcess.h"
#include "dquIdmapQuery.h"
#include "../Section/LogicSectionConfigDataManage.h"


#define CI_PSD_COMM_STATE_GOOD  ((UINT8)0x55)
#define CI_PSD_COMM_STATE_BAD   ((UINT8)0xAA)



#define VOBC_CI_STOP_TW   ((UINT8)0x55)         /*VOBC到CI列车已停稳*/
#define VOBC_CI_STOP_WTW  ((UINT8)0xAA)         /*VOBC到CI列车未停稳*/

#define CI_VOBC_SIGNAL_YES			((UINT8)0x55)         /*CI到VOBC出站允许信号*/
#define CI_VOBC_SIGNAL_NO			((UINT8)0xAA)         /*CI到VOBC出站禁止信号(正常关闭)*/
#define CI_VOBC_SIGNAL_ERR			((UINT8)0xCC)         /*CI到VOBC出站禁止信号(异常关闭)*/
#define CI_VOBC_SIGNAL_DEFAULT		((UINT8)0xFF)         /*CI到VOBC出站信号默认状态*/

#define CI_VOBC_NO_LOCK				((UINT8)0x00)		  /*CI给后备通道发站外直轨锁闭方向，默认值*/

#define CI_VOBC_INTERFACE_INFOTYPE    ((UINT16)0x0206) /*互联互通CI_VOBC接口信息类型*/
#define CI_VOBC_BACKUP_INTERFACE_INFOTYPE    ((UINT16)0x0402) /*后备模式的CI_VOBC接口信息类型*/
#define VOBC_CI_INFO_TYPE_PSD_CONTROL ((UINT16)0x0201) /*VOBC_CI屏蔽门控制报文类型*/
#define VOBC_CI_INFO_TYPE_BACKUP ((UINT16)0x0308) /*VOBC_CI备用通道报文类型*/
#define CI_VOBC_INFO_TYPE_PSD_STATE   ((UINT16)0x0202) /*CI_VOBC屏蔽门状态及闯红灯报文类型*/
#define VOBC_CI_INFO_TYPE_HEART_FRAME ((UINT16)0x0203) /*VOBC_CI心跳帧报文类型*/
#define CI_VOBC_INFO_TYPE_HEART_FRAME ((UINT16)0x0204) /*CI_VOBC心跳帧报文类型*/
#define VOBC_CI_INFO_TYPE_CITY_DEFINED ((UINT16)0x0205) /*VOBC_CI城市自定义帧报文类型*/
#define CI_VOBC_INFO_TYPE_CITY_DEFINED ((UINT16)0x0206) /*CI_VOBC城市自定义帧报文类型*/
#define VOBC_CI_INFO_TYPE_MANU_DEFINED ((UINT16)0x0207) /*VOBC_CI厂商自定义帧报文类型*/
#define CI_VOBC_INFO_TYPE_MANU_DEFINED ((UINT16)0x0208) /*CI_VOBC厂商自定义帧报文类型*/
#define VOBC_CI_INFO_TYPE_LOGOUT_ASK  ((UINT16)0x0209) /*VOBC_CI注销请求帧*/
#define CI_VOBC_INFO_TYPE_LOGOUT_ACK  ((UINT16)0x020a) /*CI_VOBC注销回复帧*/
#define VOBC_CI_INFO_TYPE_FAO_INFO    ((UINT16)0x020b) /*VOBC_CI全自动运行洗车信息帧类型*/
#define CI_VOBC_INFO_TYPE_FAO_INFO    ((UINT16)0x020c) /*CI_VOBC全自动运行洗车信息帧类型*/
#define CI_VOBC_PLAT_CLEAR_PASSENGER_INFO    ((UINT16)0x020d) /*CI_VOBC全自动运行站台状态信息帧类型*/
#define VOBC_CI_INFO_TYPE_FAO_CONTROL    ((UINT16)0x020e) /*VOBC_CI全自动运行站台控制信息帧类型：间隙探测*/
#define CI_VOBC_BACKUP_STATE_INFO    ((UINT16)0x0211) /*CI=>VOBC后备运行状态信息*/
#define VOBC_CI_INFO_TYPE_BACKUU_CONTROL    ((UINT16)0x0212) /*VOBC=>CI后备运行控制信息*/

#define VOBC_CI_GAP_DETECT_CMD_START   ((UINT8)0x55)         /*VOBC2CI启动间隙探测命令*/
#define VOBC_CI_GAP_DETECT_CMD_STOP    ((UINT8)0xAA)         /*VOBC2CI停止间隙探测命令*/
#define VOBC_CI_GAP_DETECT_CMD_DEFAULT    ((UINT8)0xFF)         /*VOBC2CI默认间隙探测命令*/

#define VOBC_CI_DOOR_CLOSEDANDLOCKED      ((UINT8)0x55)         /*VOBC2CI车门关闭且锁闭*/
#define VOBC_CI_DOOR_NOTCLOSEDANDLOCKED    ((UINT8)0xAA)         /*VOBC2CI车门非关闭且锁闭，Default Value*/

#define CI_VOBC_GAP_DETECT_STATUS_CLEAR		 ((UINT8)0x55)         /*CI2VOBC间隙探测状态：已检测且无障碍物*/
#define CI_VOBC_GAP_DETECT_STATUS_UNCLEAR    ((UINT8)0xAA)		  /*CI2VOBC间隙探测状态：已检测且有障碍物*/
#define CI_VOBC_GAP_DETECT_STATUS_DEFAULT    ((UINT8)0xFF)		  /*CI2VOBC间隙探测状态：未检测/无此功能，Default Value*/

#define CI_VOBC_PRTCL_VER			 ((UINT8)0x01)			 /*CI_VOBC协议版本号*/
#define CI_VOBC_PRTCL_VER_FAOHLHT	 ((UINT8)0x65) /*CI_VOBC协议版本号101*/
#define CI_VOBC_BACKUP_PRTCL_VER	 ((UINT8)0x66)	/*CI_VOBC后备通道接口协议版本号*/

#define CI_VOBC_REMOVE_YES  ((UINT8)0x55) /*互锁解除有效*/
#define CI_VOBC_REMOVE_NO   ((UINT8)0xAA) /*互锁解除无效*/
#define CI_VOBC_REMOVE_OFF  ((UINT8)0xFF) /*互锁解除默认值*/

#define IVOC_CI_INTERFACE_INFOTYPE	 ((UINT16)0x0106U)		/*IVOC-OC接口*/
#define IVOC_CI_BACKUP_INTERFACE_INFOTYPE	((UINT16)0x0402)	/*RC/CI-IVOC接口(后备通道)*/
#define IVOC_CI_INFO_TYPE_CONTROL	 ((UINT16)0x0201U)		/*IVOC->OC控制信息，周期发送*/
#define CI_IVOC_INFO_TYPE_STATE		 ((UINT16)0x0202U)		/*OC->IVOC状态信息，周期发送*/
#define IVOC_CI_BACKUPINFO_TYPE_CONTROL	 ((UINT16)0x0308U)		/*IVOC->OC备用通道状态信息，周期发送*/
#define CI_IVOC_BACKUPINFO_TYPE_STATE		 ((UINT16)0x0309U)		/*OC->IVOC备用通道控制信息，周期发送*/
#define IVOC_CI_INFO_TYPE_LOGOUT_ASK ((UINT16)0x0203U)	/*IVOC->OC注销请求帧，非周期*/
#define CI_IVOC_INFO_TYPE_LOGOUT_ACK ((UINT16)0x0204U)	/*OC->IVOC注销回复帧，非周期*/
#define IVOC_CI_INFO_TYPE_HEART_FRAME ((UINT16)0x0205U)	/*IVOC->OC心跳帧，非周期*/
#define CI_IVOC_INFO_TYPE_HEART_FRAME ((UINT16)0x0206U)	/*OC->IVOC心跳帧，非周期*/
#define CI_IVOC_INFO_TYPE_SPECIAL_CONTROL ((UINT16)0x0208U)	/*rc->IVOC特控报文帧，非周期*/

#define CI_IVOC_PRTCL_VER		((UINT8)0x01U)					/*CI_VOBC协议版本号*/
#define CI_IVOC_BACKUP_PRTCL_VER		((UINT8)0x066)					/*CI_VOBC后备通道协议版本号*/

#define IVOC_CI_CMD_MAX			((UINT16)100U)			/*IVOC 到CI命令数量最大值*/
#define IVOC_CI_CMD_DEVICE_MAX  ((UINT8)100U)			/*IVOC 到CI命令设备数量最大值*/
#define IVOC_CI_EA_MAX			((UINT8)20U)			/*IVOC 到CI EA最大值*/

#define IVOC_CI_STOP_ASSURE_YES     ((UINT8)0x55)         /*IVOC到CI停车保证状态允许*/
#define IVOC_CI_STOP_ASSURE_NO      ((UINT8)0xAA)         /*IVOC到CI停车保证状态未允许*/
#define IVOC_CI_STOP_ASSURE_DEF     ((UINT8)0xFF)         /*IVOC到CI停车保证状态默认值*/
#define IVOC_CI_STOP_ASS_SUM_MAX	((UINT8)100U)		  /*IVOC到CI停车保证数量最大值*/

#define IV0C_CI_RESOURCE_CANCEL_SUM_MAX		((UINT8)100U)		/*IVOC到CI取消资源允许进路数量最大值*/

#define IVOC_CI_CMD_TYPE_RES_APPLY		((UINT8)0x01)		  /*IVOC到CI命令资源申请*/
#define IVOC_CI_CMD_TYPE_RES_RELEASE	((UINT8)0x02)		  /*IVOC到CI命令资源释放*/
#define IVOC_CI_CMD_TYPE_PSD_CLOSE		((UINT8)0x03)		  /*IVOC到CI命令屏蔽门关闭*/
#define IVOC_CI_CMD_TYPE_PSD_OPEN_FOUR		((UINT8)0x04)		  /*IVOC到CI命令四编组开门*/
#define IVOC_CI_CMD_TYPE_EA_BUILD		((UINT8)0x05)		  /*IVOC到CI命令区间疏散建立*/
#define IVOC_CI_CMD_TYPE_EA_CANCEL		((UINT8)0x06)		  /*IVOC到CI命令区间疏散取消建立*/
#define IVOC_CI_CMD_TYPE_DYTEST_REQ		((UINT8)0x07)		  /*IVOC到CI命令动态测试申请*/
#define IVOC_CI_CMD_TYPE_DYTEST_CANCEL	((UINT8)0x08)		  /*IVOC到CI命令动态测试取消*/
#define IVOC_CI_CMD_TYPE_PSD_OPEN_SIX	((UINT8)0x09)			/*IVOC到CI命令六编组开门*/
#define IVOC_CI_CMD_TYPE_PSD_OPEN_EIGHT ((UINT8)0x0A)			/*IVOC到CI命令八编组开门*/
#define IVOC_CI_CMD_TYPE_JUMP_LOCK_APPLY ((UINT8)0x0B)			/*IVOC到TIOC命令跳跃锁闭申请*/
#define IVOC_CI_CMD_TYPE_JUMP_LOCK_RELEASE ((UINT8)0x0C)			/*IVOC到TIOC命令跳跃锁闭释放*/
#define IVOC_CI_CMD_GAP_DETECT_START   ((UINT8)0x0D)         /*IVOC2CI启动间隙探测命令*/
#define IVOC_CI_CMD_GAP_DETECT_STOP    ((UINT8)0x0E)         /*IVOC2CI停止间隙探测命令，Default Value*/
#define IVOC_CI_CMD_NON_RETURN_STEADY   ((UINT8)0x0F)         /*IVOC2CI无人折返稳灯命令*/
#define IVOC_CI_CMD_NON_RETURN_FLASH    ((UINT8)0x10)         /*IVOC2CI无人折返闪灯命令，Default Value*/
#define IVOC_CI_CMD_TYPE_EMD_BUILD		((UINT8)0x11)			/*IVOC2CI逃生门/客室门紧急解锁防护区域建立命令*/

#define IVOC_CI_LOGOUT_NORMAL			((UINT8)0x00U)		  /*IVOC到IC 正常注销*/
#define IVOC_CI_LOGOUT_SLEEP			((UINT8)0x01U)		  /*IVOC到IC 休眠注销*/

#define VOBC_CI_DIR_UP				((UINT8)0x55U)		  /*IVOC到IC 上行*/
#define VOBC_CI_DIR_DOWN			((UINT8)0xAAU)		  /*IVOC到IC 下行*/
#define VOBC_CI_DIR_DEF				((UINT8)0xFFU)		  /*IVOC到IC 默认*/

#define CI_IVOC_SWITCH_POSTION_DING		((UINT8)0x55U)		  /*CI到IVOC道岔定位状态*/
#define CI_IVOC_SWITCH_POSTION_FAN		((UINT8)0xAAU)		  /*CI到IVOC道岔反位状态*/
#define CI_IVOC_SWITCH_POSTION_SHIBIAO	((UINT8)0xCCU)		  /*CI到IVOC道岔定位失表*/

#define CI_IVOC_PSD_STATE_CLOSE			((UINT8)0xAAU)		  /*CI到IVOC屏蔽门关闭*/
#define CI_IVOC_PSD_STATE_OPEN			((UINT8)0x55U)		  /*CI到IVOC屏蔽门打开*/

#define CI_IVOC_PSD_PCB_STATE_DOWN		((UINT8)0x55U)		  /*CI到IVOC PCB按钮激活*/
#define CI_IVOC_PSD_PCB_STATE_UP		((UINT8)0xAAU)		  /*CI到IVOC PCB按钮未激活*/
#define CI_IVOC_PSD_PCB_PL		        ((UINT8)0xFFU)		  /*CI到IVOC PCB按钮旁路*/

#define CI_IVOC_PSD_POB_STATE_VALID		((UINT8)0x55U)		  /*CI到IVOC POB按钮激活*/
#define CI_IVOC_PSD_POB_STATE_INVALID	((UINT8)0xAAU)		  /*CI到IVOC POB按钮未激活*/
#define CI_IVOC_PSD_POB_PL		        ((UINT8)0xFFU)		  /*CI到IVOC POB按钮旁路*/

#define CI_IVOC_PSD_PDB_STATE_INVALID	((UINT8)0xAAU)		  /*CI到IVOC PDB按钮未激活*/
#define CI_IVOC_PSD_PDB_NO_BUTTON		((UINT8)0xCCU)		  /*CI到IVOC PDB按钮未激活*/
#define CI_IVOC_PSD_PDB_STATE_VALID		((UINT8)0x55U)
#define CI_IVOC_PSD_PDB_PL		        ((UINT8)0xFFU)		  /*CI到IVOC PDB按钮旁路*/

#define CI_IVOC_GAP_DETECT_STATUS_CLEAR		 ((UINT8)0x55)         /*CI2VOBC间隙探测状态：已检测且无障碍物*/
#define CI_IVOC_GAP_DETECT_STATUS_UNCLEAR    ((UINT8)0xAA)		  /*CI2VOBC间隙探测状态：已检测且有障碍物*/
#define CI_IVOC_GAP_DETECT_STATUS_DEFAULT    ((UINT8)0xFF)		  /*CI2VOBC间隙探测状态：未检测/无此功能，Default Value*/

#define CI_IVOC_ESB_STATE_VALID			((UINT8)0x55U)		  /*CI到IVOC ESB按钮按下*/
#define CI_IVOC_ESB_STATE_INVALID		((UINT8)0xAAU)		  /*CI到IVOC ESB按钮未按下*/

#define CI_IVOC_NON_RETURN_STATE_VALID			((UINT8)0x55U)		  /*CI到IVOC 无人折返按钮按下*/
#define CI_IVOC_NON_RETURN_STATE_INVALID				((UINT8)0xAAU)		  /*CI到IVOC 无人折返按钮未按下*/

#define CI_IVOC_SPKS_STATE_VALID		((UINT8)0x55U)		  /*CI到IVOC SPKS按钮激活*/
#define CI_IVOC_SPKS_STATE_INVALID		((UINT8)0xAAU)		  /*CI到IVOC SPKS按钮未激活*/

#define CI_IVOC_GARAGEDR_STATE_VALID	((UINT8)0x55U)		  /*CI到IVOC 车库门打开*/
#define CI_IVOC_GARAGEDR_STATE_INVALID	((UINT8)0xAAU)		  /*CI到IVOC 车库门关闭*/

#define CI_IVOC_ALLLINE_FLOCK			((UINT8)0xCCU)		  /*CI到IVOC 全线封锁*/
#define CI_IVOC_ALLLINE_FLOCK_NO		((UINT8)0xFFU)		  /*CI到IVOC 未全线封锁*/

#define CI_IVOC_FLOODGATE_OPEN_LOCK		((UINT8)0xAAU)		  /*CI到IVOC 防淹门开启锁定*/
#define CI_IVOC_FLOODGATE_OPEN_LOCK_NO	((UINT8)0x55U)		  /*CI到IVOC 防淹门未开启锁定*/

#define CI_IVOC_FLOODGATE_CLOSE_REQ		((UINT8)0x55U)		  /*CI到IVOC 防淹门有关门请求*/
#define CI_IVOC_FLOODGATE_CLOSE_REQ_NO	((UINT8)0xAAU)		  /*CI到IVOC 防淹门无关门请求*/

#define CI_IVOC_DYTEST_REPLY_YES		((UINT8)0x55U)		  /*CI到IVOC 动态测试同意*/
#define CI_IVOC_DYTEST_REPLY_NO			((UINT8)0xAAU)		  /*CI到IVOC 动态测试不同意*/

#define CI_IVOC_LOGSEC_PRLOCK_OPEN		((UINT8)0x55U)		  /*CI到IVOC 逻辑区段保护区段兼进路锁闭，且所属进路开放*/
#define CI_IVOC_LOGSEC_PRLOCK_CLOSE		((UINT8)0xAAU)		  /*CI到IVOC 逻辑区段保护区段兼进路锁闭，且所属进路未开放*/
#define CI_IVOC_LOGSEC_RLOCK			((UINT8)0xCCU)		  /*CI到IVOC 逻辑区段仅进路锁闭*/
#define CI_IVOC_LOGSEC_PLOCK			((UINT8)0x33U)		  /*CI到IVOC 逻辑区段仅保护区段锁闭*/

#define CI_IVOC_STOP_ENASSURE_ROUTE_SUM ((UINT16)100U)		  /*CI到IVOC 停车保证进路最大值*/
#define CI_IVOC_RESOURCE_CANCEL_RTSUM	((UINT16)100U)		  /*CI到IVOC 资源取消进路最大值*/

#define CI_IVOC_FLOODGATE_APPLY_SUM		((UINT16)50U)		  /*CI到IVOC 防淹门关闭请求最大数量*/
#define CI_IVOC_PACKET_LENGTH_MAX		((UINT16)1400U)		  /*CI到IVOC 包长度数量最大值*/
#define TRAIN_TOPLATFORM_LOG_SUM		((UINT16)1000U)		  /*列车到站台的逻辑区段最大数量*/

#define CI_IVOC_LOGSEC_JUMPLOCK_YES		((UINT8)0x55U)		  /*CI到IVOC 逻辑区段跳跃锁闭已锁闭*/
#define CI_IVOC_LOGSEC_JUMPLOCK_NO		((UINT8)0xaaU)		  /*CI到IVOC 逻辑区段跳跃锁闭未锁闭*/

#define IVOC_LOG_OUT_FAILURE			((UINT8)0xaau)		  /*IVOC注销失败*/
#define IVOC_LOG_OUT_SUCCESS			((UINT8)0x55u)		  /*IVOC注销成功*/

#define CI_IVOC_SCREEN_REQ_YES			((UINT8)0x55u)		  /*筛选申请*/
#define CI_IVOC_SCREEN_REQ_NO			((UINT8)0xffu)		  /*无筛选申请*/

#define IVOC_CI_UNLOCK_OVERLAP_SUM		((UINT8)20U)          /*IVOC到CI允许解锁保护区段数量最大值*/
#define CI_IVOC_UNLOCK_OVERLAP_SUM		((UINT8)20U)		  /*CI到IVOC申请解锁保护区段数量最大值*/

#define IVOC_CI_FLOODGATE_CLOSE_ALLOW_SUM		((UINT8)50U)	/*IVOC到CI防淹门关闭允许的数量最大值*/
#define IVOC_CI_GARAGEDOOR_CLOSE_ALLOW_SUM		((UINT8)50U)	/*IVOC到CI车库门关闭允许的数量最大值*/

#define CI_IVOC_URGENT_YES		        ((UINT8)0x55U)		  /*CI到IVOC 紧急制动状态有效*/
#define CI_IVOC_URGENT_NO		        ((UINT8)0xaaU)		  /*CI到IVOC 紧急制动状态无效*/

#define CI_VOBC_BACKUP_SEND_ROUTE_SUM		((UINT8)5U)	/*CI到车载后备通道进路数量最大值*/
#define CI_IVOC_LOST_POSITION	((UINT8)0x55U)		  /*CI到车载特控报文 丢位置*/
#define CI_IVOC_YUXIANOPEN_ROUTE_MAX		((UINT8)200U)		  /*列车到站台的逻辑区段最大数量 合法[0,200]*/

#ifdef __cplusplus
extern "C" {
#endif


#ifndef SFP_PROTOCOL

/*与联锁通信的Vobc信息*/
typedef struct S_VobcToCiPsdDataStruct
{
    UINT16 PsdId;                             /*Psd ID*/
	UINT32 PsdIdInterConn;                    /*互联互通Psd ID*/
    UINT8 CmdType;                            /*命令类型*/
	UINT8 gapDetectCmd;						  /*间隙探测命令*/
	UINT8 VOBCDoorState;                      /*VOBC车门状态*/
    UINT32 CmdStartCycNum;                    /*命令起始周期*/
	UINT32 faultIsolationRequest;             /*故障隔离信息请求*/
	UINT32 VOBCIsolatePsdRequest[2];		/*VOBC故障隔离PSD请求，新机场线CI-VOBC接口文档里规定8个字节，Added on 20180223*/
} VobcToCiPsdDataStruct;

/*备用模式与联锁通信的Vobc含有的PSD信息*/
typedef struct S_VobcBackUpToCiPsdDataStruct
{
	UINT16 PsdId;                             /*Psd ID*/
	UINT32 PsdIdInterConn;                    /*互联互通Psd ID*/
	UINT8 CmdType;                            /*命令类型*/
	UINT32 CmdStartCycNum;                    /*命令起始周期*/
} VobcBackUpToCiPsdDataStruct;

typedef struct S_IvocToCiEaStruct
{
	UINT8 chDeviceStatus;			/* 设备状态 */
	UINT16 wDeviceId;				/* 设备ID */
	UINT32 dwBuildCyc;			/*疏散建立周期*/
}IvocToCiEaDataStru;

typedef struct S_IvocToCiCmdStruct
{
	UINT8 chCmdType;				/* 命令类型 */
	UINT8 chCmdDevNum;				/* 命令设备数量 */
	UINT16 wCmdDevId[IVOC_CI_CMD_DEVICE_MAX];				/* 命令设备ID数组*/
}IvocCmdStru;

/*与联锁通信的Vobc信息*/
typedef struct S_VobcToCiDataStruct
{
    UINT16 VobcId;                                           /*Vobc ID*/
	UINT8 psdCmdCode;										 /*站台开门码*/
	UINT16  trainEditGroupInfo;                               /*列车编组信息*/
	UINT8  washTrainRequest;                                 /*洗车请求信息*/
	UINT8 headWashStopSteadyInfo;                            /*头端洗位停稳信息，洗车停稳1*/
	UINT8 tailWashStopSteadyInfo;                            /*尾端洗位停稳信息，洗车停稳2*/
	UINT8 passWashMachineRequest;                            /*通过洗车机请求信息*/
	UINT8 washPauseRequest;									 /*暂停洗车请求*/
	UINT8 chWashMachineWorkMode;							 /*洗车机工作模式设置*/
    UINT8 PsdSum;                                            /*屏蔽门数量*/ 
	UINT8 trainDirection;                                    /*列车运行方向*/
	UINT8 trainStopSteadyState;                              /*列车停稳停准状态*/
	UINT32 trackSecID;										 /*轨道区段ID*/
	UINT32 stopSteadyStartCycNum;							 /*停稳开始周期*/
	UINT32 firstHeartFrmSndCycNum;							 /*第一次发送心跳帧周期*/
	UINT32 ComStartCycle;/*与VOBC通信开始周期，使用该周期做VOBC通信中断判断*/
	UINT16 appInfoType;										 /*应用信息类型*/
	UINT16 vobcLogId;										 /*互联互通4IP VOBC1端或2端标识*/
	VobcToCiPsdDataStruct PsdData[VOBC_TO_CI_TRAIN_PSD_MAX]; /*关联屏蔽门数据*/
	UINT32 signalID;										 /*VOBC->CI信号机ID*/
	
	/*add by qw.liu 2022-02-24 增加车车新接口字段*/
	UINT8 chTrainLevel;										/*列车运行级别:01:VBTC;02:ITC;03:UR;04:ABL*/
	UINT8 chTrainMode;						/*列车模式*/
	UINT16  wTrainMaxSafeHeadLink;			/*列车最大安全前端所处Link*/
	UINT32  dwTrainMaxSafeHeadOffset;		/*列车最大安全前端偏移量*/
	UINT16	wTrainMinSafeHeadLink;			/*列车最小安全前端所处link*/
	UINT32	dwTrainMinSafeHeadOffset;		/*列车最小安全前端偏移量*/
	UINT16  wTrainMaxSafeTailLink;			/*列车最大安全后端所处Link*/
	UINT32  dwTrainMaxSafeTailOffset;		/*列车最大安全后端偏移量*/
	UINT16	wTrainMinSafeTailLink;			/*列车最小安全后端所处link*/
	UINT32	dwTrainMinSafeTailOffset;		/*列车最小安全后端偏移量*/
	/*列车运行方向 trainDirection*/
	UINT16 wTrainSpeed;										/*列车速度*/
	UINT8 chSpeedDir;										/*列车速度方向*/
	UINT8	chTrainZeroState;				/*列车零速状态*/
	UINT8 chTrainHeadScreenConfirm;			/*人工确认前筛状态*/
	UINT8 chTrainTailScreenConfirm;			/*人工确认后筛状态*/
	UINT8 chTrainStopAssureNum;								/*列车停车保证*/
	UINT16 szTrainStopRouteId[IVOC_CI_STOP_ASS_SUM_MAX];								/*列车停车保证进路ID*/
	UINT32 szTrainStopRouteCyc[IVOC_CI_STOP_ASS_SUM_MAX];
	UINT8 chResourcesCancelNum;								/*列车资源取消(允许进路数量)*/
	UINT16 szResourcesCancelRouteId[IV0C_CI_RESOURCE_CANCEL_SUM_MAX];								/*列车取消资源进路ID*/
	UINT32 szResourcesCancelRouteCyc[IV0C_CI_RESOURCE_CANCEL_SUM_MAX];
	UINT8 cAllowUnlockOverlapNum;  /*列车允许解锁保护区段的数量*/
	UINT16 szAllowUnlockOverlapId[IVOC_CI_UNLOCK_OVERLAP_SUM];  /*列车允许解锁保护区段的ID*/
	UINT32 szAllowUnlockOverlapStartCyc[IVOC_CI_UNLOCK_OVERLAP_SUM];  /*列车允许解锁保护区段的起始周期号*/
	UINT8 cAllowCloseFloodGateNum;			/*列车允许关闭的防淹门数量*/
	UINT16 szAllowCloseFloodGateId[IVOC_CI_FLOODGATE_CLOSE_ALLOW_SUM];  /*列车允许关闭的防淹门ID*/
	UINT32 szAllowCloseFloodGateCyc[IVOC_CI_FLOODGATE_CLOSE_ALLOW_SUM];  /*防淹门关闭请求周期号*/

	UINT8 cAllowCloseGarageGateNum;			/*列车允许关闭的车库门数量*/
	UINT16 szAllowCloseGarageGateId[IVOC_CI_FLOODGATE_CLOSE_ALLOW_SUM];  /*列车允许关闭的车库门ID*/
	UINT32 szAllowCloseGarageGateCyc[IVOC_CI_FLOODGATE_CLOSE_ALLOW_SUM];  /*车库门关闭请求周期号*/

	UINT8 chTrainWakeState;					/*列车唤醒状态*/
	UINT8 chTrainReportState;				/*列车汇报湿轨报警信息 无需新增二乘*/
	UINT8 chEaNum;					                        /* 区间疏散数量 */
	IvocToCiEaDataStru stEaInfo[IVOC_CI_EA_MAX];            /* 区间疏散信息 */
	UINT16 wGroupOtherTrainId;								/* 编组另一列车ID*/
	UINT8 chGroupRunState;									/* 编组列车状态 1非编组2编组建立3编组运行4编组折返5编组解耦*/
	UINT8 chGroupTrainReat;									/* 编组前后车关系 0x55本车为编组前车 0xaa本车编组后车 0x5a非编组*/
	UINT16 wIvocCmdNum;										/*IVOC 命令数量*/
	IvocCmdStru stCmdInfo[IVOC_CI_CMD_MAX];					/*IVOC 命令信息*/
	UINT32 dwDelayTime;										/*消息延迟时间*/

	UINT8 chLogOutState;									/*注销申请状态*/

	UINT8 chActive;											/*当前激活端*/
	UINT8 chRrmReq;											/*远程RM申请*/
	UINT16 wNextStation;									/*下一站*/
	UINT8 chDerailment;										/*脱轨状态*/
	
	UINT8 chVideoQkState;                                   /*视频清客状态*/
	UINT8 chVideoQkResult;                                  /*视频清客结果*/
	UINT16 wVideoQkRelatePsdId1;                            /*视频清客关联屏蔽门ID1*/
	UINT16 wVideoQkRelatePsdId2;                            /*视频清客关联屏蔽门ID2*/

	UINT16 wHeadAxisId;			/*前方计轴编号*/
	UINT8 wHeadITEResult;		/*前方ITE识别结果 0x55：无列车    0xaa：有列车*/
	UINT16 wTailAxisId;			/*后方计轴编号*/
	UINT8 wTailITEResult;		/*后方ITE识别结果 0x55：无列车    0xaa：有列车*/
	UINT8 chNvramPosFlag;		/*NVNAM位置标识 0x55：列车使用NVRAM位置    0xaa：列车未使用NVRAM位置*/
	UINT16 wHeadSigId;   /*前方信号机ID*/
	UINT16 wHeadVobcId;                                           /*前车ID*/
	UINT8 chJumpBackApply;		 /*向后跳跃申请*/
	UINT32 dwJumpBackSn;		 /*向后跳跃申请序列号*/
} VobcToCiDataStruct;

/*使用后备模式与联锁通信的Vobc信息*/
typedef struct S_VobcBackUpToCiDataStruct
{
	UINT16 VobcId;                                           /*Vobc ID*/
	UINT8 chTrainLevel;										/*列车运行级别 连续式510/CBTC: 0x01; ITC: 0x02; 联锁510/IL模式: 0x03; ABL模式 :0x04;*/
	UINT8 trainDirection;                                    /*列车运行方向*/
	UINT16 appInfoType;										 /*应用信息类型*/
	UINT16 vobcLogId;										 /*互联互通4IP VOBC1端或2端标识*/
	UINT32 ComStartCycle;                /*与VOBC后备模式通信周期，使用该周期做VOBC通信中断判断*/
	UINT16 wNextStation;									/*前方站台ID*/
	UINT16  wTrainMaxSafeHeadLink;			/*列车最大安全前端所处Link*/
	UINT32  dwTrainMaxSafeHeadOffset;		/*列车最大安全前端偏移量*/
	UINT16	wTrainMinSafeTailLink;			/*列车最小安全后端所处link*/
	UINT32	dwTrainMinSafeTailOffset;		/*列车最小安全后端偏移量*/
	/*列车控制PSD相关*/
	UINT8 psdCmdCode;										 /*站台开门码*/
	UINT8 PsdSum;                                            /*屏蔽门数量 取值0，1，2*/
	VobcBackUpToCiPsdDataStruct PsdData[VOBC_BACKUP_TO_CI_TRAIN_PSD_MAX]; /*关联屏蔽门数据*/
	UINT16 wTrainHeadCurSignalId;				/*列车前方当前信号机*/
	UINT16 wTrainHeadTrainId; /*列车前车ID*/
	UINT8 chNvramPosFlag; /*NVRAM位置标识*/
	UINT8 chStopSteadyState; /*停准停稳标志*/
	UINT32 stopSteadyStartCycNum; /*停准停稳标志设置周期*/
	UINT32 trackSecID; /*停准停稳轨道区段*/
} VobcBackUpToCiDataStruct;


#endif

extern VobcToCiDataStruct VobcToCiDataStru[VOBC_TO_CI_SUM_MAX];

extern VobcBackUpToCiDataStruct VobcBackUpToCiDataStru[VOBC_BACKUP_TO_CI_SUM_MAX];

extern UINT8 VobcToCiSum;


/*
* 功能描述： 解析处理VOBC单帧数据
* 参数说明： const UINT8* dataBuf, 数据缓冲区
*            const UINT16 dataLength, 数据长度
*            const UINT8 systemId, 源设备ID
*            const UINT16 logId，互联互通4IP VOBC的1端或2端标识  
* 返回值  ： 0: 数据解析失败
*			 1: 数据解析成功      
*/
UINT8 ParseVobcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 systemId,const UINT16 logId);

/*
* 功能描述： 解析处理VOBC备用通道单帧数据
* 参数说明： const UINT8* dataBuf, 数据缓冲区
*            const UINT16 dataLength, 数据长度
*            const UINT8 systemId, 源设备ID
*            const UINT16 logId，互联互通4IP VOBC的1端或2端标识
* 返回值  ： 0: 数据解析失败
*			 1: 数据解析成功
*/
UINT8 ParseVobcBackUpToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 systemId, const UINT16 logId);

/*
* 功能描述： 组VOBC数据
* 参数说明：    
* 返回值  ： 0:组数据失败
*			 1:组数据成功      
*/
UINT8 PackCiToVobcData(void);

/*
* 功能描述： 组VOBC后备通道数据
* 参数说明： void
* 返回值  CI_ERROR失败  CI_SUCCESS成功
*/
UINT8 PackCiToVobcBackUpData(void);


/*
* 功能描述： 获取VOBC到CI命令结构体数组
* 参数说明： void    
* 返回值  ： NULL: 获取失败
*           !NULL: VOBC到CI命令结构体数组指针      
*/
VobcToCiDataStruct* GetVobcToCiDataStru(void);

/*
* 功能描述： 获取VOBC到CI命令结构体数组总数
* 参数说明： void    
* 返回值  ： 数组总数    
*/
UINT8 GetVobcToCiSum(void);

/*
* 功能描述： 获取屏蔽门编组信息
* 参数说明： const UINT16 psdId :屏蔽门ID    
* 返回值  ： 01:四编组
*            02:六编组
*			 08:八编组
*            CI_ERROR: 不合法
*/
UINT8 GetPsdEditGroupInfo(const UINT16 psdId);
/*
* 功能描述： 从VOBC发送给CI的信息结构体数组中，删除指定位置的数据
* 参数说明： const UINT8 idx:VOBC发送给CI的信息结构体数组的位置索引
* 返回值  ： 0:失败
*			 1:成功     
*/
UINT8 RemoveVobcToCiMsgAt(UINT8 idx);


/*
* 功能描述： 根据索引获取Vobc id
* 参数说明： UINT16 idx:VOBC发送给CI的信息结构体数组的位置索引
* 返回值  ： 0:失败
*			 其它值:VobcId
*/
UINT16 GetVobcIdByIndex(UINT16 index);

/*
* 功能描述： 根据索引获取Vobc 编组信息
* 参数说明： UINT16 idx:VOBC发送给CI的信息结构体数组的位置索引
* 返回值  ： 0:失败
*			 其它值:VobcId
*/
UINT8 GetVobcEditGroupInfoByIndex(UINT16 index);

/*
* 功能描述： 组(FAO+HLHT)VOBC数据
* 参数说明： QueueStruct* CiToVobcDataQueue, 组包发送队列地址
* 返回值  ： 0:组数据失败
*			 1:组数据成功
*/
UINT8 PackCiToVobcDataFAOHLHToneSelf(VobcToCiDataStruct* vobcToCiDataStru);

/*
* 功能描述： 组(FAO+HLHT)VOBC数据(去除自动洗车和站台控制信息)
* 参数说明： QueueStruct* CiToVobcDataQueue, 组包发送队列地址
* 返回值  ： 0:组数据失败
*			 1:组数据成功
*/
UINT8 PackCiToVobcDataFAOHLHToneSelfSecond(VobcToCiDataStruct* vobcToCiDataStru);

/*
* 功能描述： 列车编组信息防护检查
* 参数说明：UINT8 trainEditGroupInfo, 列车编组信息
* 返回值  ： 0:组数据失败
*			 1:组数据成功
*/
UINT8 ChecktrainEditGroupInfo(UINT8 trainEditGroupInfo, OUT UINT8 EditGroupinfo_out);

/*
* 功能描述： 列车洗车请求防护检查
* 参数说明：UINT8 trainEditGroupInfo, 列车编组信息
* 返回值  ： 0:组数据失败
*			 1:组数据成功
*/
UINT8 CheckwashTrainRequest(UINT8 washTrainRequest, OUT UINT8 washTrainRequest_out);

/*
* 功能描述： 头端洗位停稳信息防护检查
* 参数说明：UINT8 trainEditGroupInfo, 列车编组信息
* 返回值  ： 0:组数据失败
*			 1:组数据成功
*/
UINT8 CheckheadWashStopSteady(UINT8 headwashStop, OUT UINT8 headwashStop_out);

/*
* 功能描述： 尾端洗位停稳信息
* 参数说明：UINT8 trainEditGroupInfo,尾端洗位停稳信息
* 返回值  ： 0:组数据失败
*			 1:组数据成功
*/
UINT8 ChecktailWashStopSteady(UINT8 tailwashStop, OUT UINT8 tailwashStop_out);

/*
* 功能描述： 通过洗车机请求防护检查
* 参数说明：UINT8 trainEditGroupInfo, 通过洗车机请求
* 返回值  ： 0:组数据失败
*			 1:组数据成功
*/
UINT8 CheckpassWashMachine(UINT8 passWashMachine, OUT UINT8 passWashMachine_out);

/*
* 功能描述： 校验防护区域和列车包络是否有重合
* 参数说明： UINT16 wFloodGateId, 防淹门ID
*			 UINT16 wTrainId,	列车ID
* 返回值  ： CI_ERROR 失败,包络和防护区域无重叠，发实际状态
*			 CI_SUCCESS 成功，包络和防护区域有重叠，发无关门请求
*/
UINT8 CheckProtectEnvelope(UINT16 wFloodGateId, UINT16 wTrainId);

/*
* 功能描述： 组包Ci到Ivoc备用通道逻辑区段信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
*			 UINT16 wTrainId 列车ID
* 返回值  ： CI_ERROR 失败
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpLogSecInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);

/*
* 功能描述： 组包Ci到Ivoc备用通道进路信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
*			 UINT16 wTrainId 列车ID
* 返回值  ： CI_ERROR 失败
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpRouteInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);

/*
* 功能描述： 组包Ci到Ivoc备用通道折返逻辑区段信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
*			 UINT16 wTrainId 列车ID
* 返回值  ： CI_ERROR 失败
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpReturnLogInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);

/*
* 功能描述： 组包Ci到Ivoc备用通道屏蔽门状态信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
*			 UINT16 wTrainId 列车ID
* 返回值  ： CI_ERROR 失败
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpPsdInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);

/*
* 功能描述： 组包Ci到IvocSpks备用通道状态信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
* 返回值  ： CI_ERROR 失败
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpSpksInfo(UINT8* pDataBuf, UINT16* wDataLength);

/*
* 功能描述： 组包Ci到Ivoc备用通道紧急按钮状态信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
*			 UINT16 wTrainId 列车ID
* 返回值  ： CI_ERROR 失败
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpEsbInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);

/*
* 功能描述： 组包Ci到Ivoc备用通道道岔状态信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
* 返回值  ： CI_ERROR 失败
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpSwitchInfo(UINT8* pDataBuf, UINT16* wDataLength);

/*
* 功能描述： 组包Ci到Ivoc备用通道保护区段状态信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
*			 UINT16 wTrainId 列车ID
* 返回值  ： CI_ERROR 失败
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpProtectLgcInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);

/*
* 功能描述： 组包Ci到Ivoc临时限速状态信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
*			 UINT16 wTrainId 列车ID
* 返回值  ： CI_ERROR 失败Spks
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpTsrInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);

/*
* 功能描述： 组包Ci到Ivoc状态确认信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
* 返回值  ： CI_ERROR 失败Spks
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpReqStateInfo(UINT8* pDataBuf, UINT16* wDataLength);

/*
* 功能描述： 组包Ci到IvoC防淹门状态信息
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
* 返回值  ： CI_ERROR 失败Spks
*			 CI_SUCCESS 成功
*/
static UINT8 PackCiToIvocBackUpFloodInfo(UINT8* pDataBuf, UINT16* wDataLength);

/*
* 功能描述： 组包Ci到Ivoc前车信息
* 参数说明： const UINT8* dataBuf, 数据缓冲区
*            const UINT16 *dataLength, 数据长度 输出参数
*			 const UINT16 wTrnId VOBC ID
* 返回值  ： CI_ERROR 失败
*			 CI_SUCCESS 成功
* by cgh 20240606
*/
static UINT8 PackCiToIvocHeadTrainInfo(UINT8* pDataBuf, UINT16* wDataLength, const UINT16 wTrnId);

/*
* 功能描述： 解析FAOHLHT其他报文类型数据
* 参数说明： const UINT8* dataBuf, 数据缓冲区
*            const UINT16 dataLength, 数据长度
*			 const UINT8 systemId, 源设备ID
*			 VobcToCiDataStruct* vobcToCiDataStru VOBC到CI结构体数据
* 返回值  ： 0: 数据解析失败
*			 1: 数据解析成功
* BY CGH 20240606
*/
UINT8 ParseFAOHLHTOtherTypeData(const UINT16 appInfoType, UINT8* dataBuf, UINT16 dataLen, const UINT8 systemId, VobcToCiDataStruct* vobcToCiDataStru);

/*
* 功能描述： 解析FAOHLHT后备运行控制信息数据
* 参数说明： const UINT8* dataBuf, 数据缓冲区
*            const UINT16 dataLength, 数据长度
*			 VobcToCiDataStruct* vobcToCiDataStru VOBC到CI结构体数据
* 返回值  ： 0: 数据解析失败
*			 1: 数据解析成功
* BY CGH 20240606
*/
UINT8 ParseFAOHLHTBackUpControlData(UINT8* dataBuf, UINT16 dataLen, VobcToCiDataStruct* vobcToCiDataStru);

/*
* 功能描述： 组联锁到车载飞车宕机数据
* 参数说明： 无
* 返回值  ： 无
* by cgh 20250630
*/
void PackCiToVobcFlyProtectData(void);

/*
* 功能描述：组RC到车载飞车宕机信息
* 参数说明：const UINT16 wTrainId 列车ID
* 返 回 值：无
* Created By LQ 2025.09.15
*/
void PackCiToVobcFlyProtectInfo(const UINT16 wTrainId);

/*
* 功能描述：组包Ci到Ivoc的向后跳跃申请回复
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
*			 UINT16 wTrainId 列车ID
* 返 回 值：CI_ERROR 0 失败
*			CI_SUCCESS 1 成功
* Create： fan 20250725
*/
UINT8 PackCiToIvocJumpBackReply(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);

/*
* 功能描述：组包Ci到Ivoc未接近开放进路信息(预先开放)
* 参数说明： UINT8* dataBuf, 数据缓冲区
*            UINT16 *dataLength, 数据长度 输出参数
*			 UINT16 wTrainId 列车ID
* 返 回 值：CI_ERROR 0 失败
*			CI_SUCCESS 1 成功
* Create： fan 20250725
*/
UINT8 PackCiToIvocOpenRouteNotNearInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);
#ifdef __cplusplus
}
#endif

#endif
