/********************************************************
*                                                                                                            
* 文 件 名： InputDataProcess.c   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2012-04-07
* 作    者： 联锁组
* 功能描述： 输入数据处理
* 修改记录：   
*
********************************************************/ 

#ifndef _INPUT_DATA_PROCESS_H_
#define _INPUT_DATA_PROCESS_H_



#include "../2oo2/2oo2InterfaceDataManage.h"
#include "../ParsePack/ParsePackIoData.h"
#include "../Relay/RelayConfigDataManage.h"
#include "../Relay/RelayDataManage.h"
#include "../Mask/MaskConfigDataManage.h"
#include "../Transmit/TransmitDefine.h"
#if 0
#include "../ParsePack/ParsePackZcData.h"
#endif
#include "../ParsePack/ParsePackCiData.h"
#include "../ParsePack/ParsePackAtsData.h"
#include "../ParsePack/ParsePackIoData.h"
#include "../ParsePack/ParsePackVobcData.h"
#include "../ParsePack/ParsePackPlatformData.h"
#include "../ParsePack/ParsePackLeuData.h"
#include "../ParsePack/CiInterfaceDefine.h"
#include "../LogicManage/InterlockLogicManage.h"
#include "../Signal/SignalDataManage.h"
#include "../DataManage/DeviceDataManage.h"
#include "./DeviceRelayDataProcess.h"
#include "../LogicManage/TradInterlockLogicManage.h"
#include "../Initial/InitialProcess.h"
#include "../Route/RouteDataManage.h"
#include "../Signal/SignalDataManage.h"
#include "../WashMachine/WashMachineDataManage.h"
#include "../Section/PhysicalSectionDataManage.h"
#include "../ERROR/ErrorDefine.h"
#include "dquIdmapQuery.h"
#include "../VirtualDevice/VirtualDevDataManage.h"
#include "../ParsePack/ParsePackAxleData.h"
#include "../Train/TrainDataManage.h"
#include "../ParsePack/ParsePackZcData.h"
#include "../AxisSort/AxisSort_api.h"
#include "../SectionStateProcess/SectionStateProcess_api.h"
#include "../ParsePack/ParsePackITEData.h"
#include "../PSD/PSDDataManage.h"
#include "SectionDefine.h"

#define USE_OC_GD_AS_PHY_COLL  /*宏定义：使用OC轨道状态作为物理区段采集*/
#undef USE_OC_GD_AS_PHY_COLL


#ifdef __cplusplus
extern "C" {
#endif

    
/*
* 功能描述： 处理输入数据
* 参数说明： void
* 返回值  ： void      
*/
void InputDataProcess(void);

/*
* 功能描述： 处理IO到CI数据
* 参数说明： void
* 返回值  ： 0:处理失败
*			 1:处理成功      
*/
UINT8 ProcessIoToCiData(void);
#if 1
/*
* 功能描述： 处理ZC到CI数据
* 参数说明： void
* 返回值  ： 无
*			     
*/
void ProcessZcToCiData(void);
#endif
/*
* 功能描述： 处理TMC到TIOC数据
* 参数说明： void
* 返回值  ： 0u:处理失败
*			 1:处理成功
*/
void ProcessTmcToTiocData(void);
/*
* 功能描述： 处理VOBC到CI数据
* 参数说明： void
* 返回值  ： void    
*/
void ProcessVobcToCiData(void);

/*
* 功能描述： 处理后备模式VOBC到CI数据
* 参数说明： void
* 返回值  ： void
* 修复bug YF0083-100、219
*/
void ProcessVobcBackupToCiData(void);

/*
* 功能描述： 处理PSD到CI数据
* 参数说明： void
* 返回值  ： void    
*/
void ProcessPlatformToCiData(void);

/*
* 功能描述：处理PSC系统数据
* 参数说明： void
* 返回值  ： void    
*/
void ProcessPscToCiData(void);

/*
* 功能描述： 处理ATS或现地到CI数据
* 参数说明： void
* 返回值  ： 0:处理失败
*			 1:处理成功         
*/
UINT8 ProcessAtsOrXianDiToCiData(void);

/*
* 功能描述： 处理车辆段的ATS或现地到CI数据
* 参数说明： void
* 返回值  ： 0:处理失败
*			 1:处理成功         
*/
UINT8 ProcessAtsOrXianDiToCiDataCld(void);

/*
* 功能描述： 处理设备逻辑状态
* 参数说明： void
* 返回值  ： void      
*/
void ProcessDeviceLogicState(void);

/*
* 功能描述： 处理码位逻辑
* 参数说明： 
*			 const UINT8 systemType, 系统设备类型
*			 const UINT8* maskBuf, 码位数据
*			 const UINT16 maskSum, 码位总数
* 返回值  ： 0: 处理失败
*			 1: 处理成功
*/
UINT8 MaskDataProcess(const UINT8 systemType, const UINT8* maskBuf, const UINT16 maskSum);

/*
* 功能描述： 处理CI到CI数据
* 参数说明： void
* 返回值  ： 无
*			      
*/
void ProcessCiToCiData(void);

/*
* 功能描述： 更新物理区段融合逻辑状态
* 参数说明： void
* 返回值  ： void
*/
void UpdatePhySectionMergeLogicState(void);

/*
* 功能描述： 融合逻辑区段CT占用信息
* 参数说明： void
* 返回值  ： void     
*/
void UpdateLogSectionCTOccupyState(void);

/*
* 功能描述： 处理LEU到CI数据，获取LEU整机故障标志位
* 参数说明： void
* 返回值  ： void    
*/
void ProcessLeuToCiData(void);


/*
* 功能描述： 处理ATS或现地到CI的信号特开命令
* 参数说明： void
* 返回值  ： 0:处理失败
*			 1:处理成功         
*/
UINT8 ProcessAtsOrXDToCiReturnToTRCmd(void);

/*
* 功能描述： 从PSD数据中删除某个VOBC产生的上下文
* 参数说明： UINT16 vobcId VOBC结构体的VobcId
* 返回值  ： 无
*/
void ClearPsdVobcContext(const UINT16 vobcId);


/*
* 功能描述： 更新本联锁继电接口确认状态
* 参数说明： void
* 返回值  ： void      
*/
void UpdateRelayInterfaceConfirmFlag(void);

/*
* 功能描述：处理存在ATS确认PSC旁路系统屏蔽门状态数据
* 参数说明： UINT8 pscId ：PSC系统ID
* 返回值  ： void    
*/

void UpdateAtsPscPlFlagData(UINT8 pscId);

/*
* 功能描述： 处理OC到CI的继电器数据
* 参数说明： void
* 返回值  ： 0:处理失败
*			 1:处理成功
*/
UINT8 ProcessOcToCiRelayData(void);

/*
* 功能描述： 处理OC到CI数据帧
* 参数说明： void
* 返回值  ： void
*/
void ProcessOcToCiData(void);

/*
* 功能描述： 处理融合AB系轨道区段状态
* 参数说明： void
* 返回值  ： void
*/
void OcProcessMergeABGdState(void);

/*
* 功能描述： 更新OC轨道区段采集状态
* 参数说明： void
* 返回值  ： void
*/
void OcPhyStateToDeviceStatePro(void);
/*
* 功能描述： 重置OC轨道板AB两系采集状态
* 参数说明： void
* 返回值  ： void
*/
void OcResetGdABCollState(void);

/*
* 功能描述： 更新具体的OC轨道板采集状态
* 参数说明： void
* 返回值  ： void
*/
void OcUpdateSpecificGdCollState(void);

/*
* 功能描述： 处理Axle到CI数据
* 参数说明： void
* 返回值  ： void
*/
void ProcessAxleToCiData(void);

/*
* 功能描述： 融合计轴子系统和OC子系统轨道区段采集状态
* 参数说明： void
* 返回值  ： void
*/
void MergeAxleOcGdPhyState(void);
/*
* 功能描述： 检查命令是否为普通命令（不具备二次命令）
* 参数说明： void
* 返回值  ： void
*/
UINT8 CheckIsGeneralOrder(UINT8 OrderType);
/*
* 功能描述： 虚拟联锁设置临时限速
* 参数说明： void
* 返回值  ： 无
*/
void SetComBadLinShiXianSuState_Vir(void);
/*
* 功能描述： 虚拟联锁处理引导总锁命令
* 参数说明： void
* 返回值  ： 无
*/
void DealallSwitchYLockOrder_Vir(void);
/*
* 功能描述： 根据输入虚拟联锁ID和设备属于虚拟联锁ID，检查命令是否要被执行
* 参数说明： UINT8 virCIid 输入虚拟联锁ID
*            UINT8 belongVirCIid 设备属于虚拟联锁ID
*             UINT8 orderType  命令类型
*            UINT16 deiceID 命令ID
* 返回值  ： 检查结果：CI_ERROR 不执行，CI_SUCCESS 执行
*/
UINT8 CheckOrderWhetherDoing(UINT8 virCIid,UINT8 belongVirCIid,UINT8 orderType,UINT16 deiceID);
/*
* 功能描述： 处理自动折返闪灯，稳灯码位
* 参数说明： UINT16 DeviceId  指示灯行ID
*            UINT16*maskBuf  码位数组
*           UINT8 MaskType   码位类型
* 返回值  ： 无
*/
void DealAutoReturnMask_UseVirCI(UINT16 DeviceId,UINT16*maskBuf,UINT8 MaskType,UINT16 index);
/*
* 功能描述： 获取全站维修点灯状态
* 参数说明：  UINT8 virCIid   虚拟联锁ID
* 返回值  ： 维修点灯状态
*/
UINT8 GetALLSignalMaintainState(UINT8 virCIid);

/*
* 功能描述：IVOC解锁保护区段处理
* 参数说明：vobcToCiDataStru：VOBC数据结构体指针
* 返回值  ：void
*/
static void IvocUnLockOverlapProc(VobcToCiDataStruct* vobcToCiDataStru);

/*
* 功能描述： IVOC洗车相关信息处理
* 参数说明： vobcToCiDataStru：VOBC数据结构体指针
* 返回值  ： void
* by cgh 20231109
*/
static void IvocWashDataProc(VobcToCiDataStruct* vobcToCiDataStru);

/*
* 功能描述： 设置IVOC洗车机驱动状态
* 参数说明： vobcToCiDataStru：VOBC数据结构体指针
*			 const UINT16 washMachineId  洗车机ID
* 返回值  ： void
* by cgh 20231110
*/
static void SetIvocWashDriveState(VobcToCiDataStruct* vobcToCiDataStru, const UINT16 washMachineId);

/*
* 功能描述： 清除洗车机VOBC的驱动状态
* 参数说明： vobcToCiDataStru：VOBC数据结构体指针
* 返回值  ： void
* by cgh 20231110
*/
void ClearWashVobcDriveState(VobcToCiDataStruct* vobcToCiDataStru);

/*
* 功能描述：IVOC车库门关闭确认处理
* 参数说明：vobcToCiDataStru：VOBC数据结构体指针
* 返回值  ：void
* BY LC
*/
static void IvocGarageDoorCloseProc(VobcToCiDataStruct* vobcToCiDataStru);

/*
* 功能描述： Vobc视频清客相关信息处理
* 参数说明： vobcToCiDataStru：VOBC数据结构体指针
* 返回值  ： void
* by cgh 20231214
*/
static void VobcVideoQkDataProc(VobcToCiDataStruct* vobcToCiDataStru);

/*
* 功能描述： 设置关联PSD视频清客驱动状态
* 参数说明： const UINT16 wPsdId1 屏蔽门ID1
*			 const UINT16 wPsdId2 屏蔽门ID2
*            const UINT8 chSetState  视频清客驱动状态
*			 const UINT16 wRelateVobcId 视频清客关联VOBC ID
* 返回值  ： void
* by cgh 20231214
*/
void SetRelatePsdVideoQkDriveState(const UINT16 wPsdId1, const UINT16 wPsdId2, const UINT8 chSetState, const UINT16 wRelateVobcId);

/*
* 功能描述： 出清对应列车在对应物理区段上的停稳信息
* 参数说明： UINT16 wTrainId 列车ID
* 返回值  ： void
*/
void ClearVobcStopSteadyData(UINT16 wTrainId);

/*
* 功能描述： Vobc前车位置信息处理
* 参数说明： const UINT16 wTrainId 列车ID
* 返回值  ： void
* by cgh 20240606
*/
void VobcHeadTrainDataProc(const UINT16 wTrainId);

/*
* 功能描述： 清除Vobc前车位置信息处理
* 参数说明： const UINT16 wTrainId 列车ID
* 返回值  ： void
* by cgh 20240606
*/
static void ClearVobcHeadTrainData(const UINT16 wTrainId);

/*
* 功能描述：处理ITE到CI数据
* 参数说明：void
* 返回值  ：void
* Created By LQ 2024.06.06
*/
void ProcessIteToCiData(void);

/*
* 功能描述： 更新ATS设备通信状态
* 参数说明： void
* 返回值  ： 无
* by cgh 20240614
*/
void UpdataAtsDeviceCommState(void);

/*
* 功能描述：刷新湿轨标志
* 参数说明：无
* 返回值  ：无
* Created By LQ 2024.09.20
*/
void UpdateHumidRailFlag(void);

/*
* 功能描述： 进路区段锁闭命令处理
* 参数说明： const UINT16 wCurRLockRouteId  当前锁闭所属进路ID
			 const UINT16 wPreRLockRouteId  之前锁闭所属进路ID
* 返回值  ： 无
* by cgh 20241204
*/
void RouteSecLockApplyCmdProc(const UINT16 wCurRLockRouteId, const UINT16 wPreRLockRouteId);

/*
* 功能描述：逻辑进路清除跨控区进路逻辑区段锁闭处理
* 参数说明：const UINT16 wPreRouteId  原进路ID
* 返 回 值： 无
* Created By LQ 2025.03.10
*/
void LogRouteCleanOldLogSecLockProc(const UINT16 wPreRouteId);

/*
* 功能描述：逻辑进路清除跨控区进路物理区段锁闭处理
* 参数说明：const UINT16 wPreRouteId  原进路ID
* 返 回 值： 无
* Created By LQ 2025.03.10
*/
void LogRouteCleanOldPhySecLockProc(const UINT16 wPreRouteId);

/*
* 功能描述：跨控区部分进路清除逻辑进路处理
* 参数说明：const UINT16 wCurRouteId 当前进路ID
* 返 回 值： 无
* Created By LQ 2025.03.10
*/
void OtherPartRouteCleanLogRouteProc(const UINT16 wCurRouteId);

/*
* 功能描述：处理OC->CI的PSD数据
* 参数说明： void
* 返回值  ： void
*/
void ProcessOCToCiPsdData(void);

/*
* 功能描述： 处理OC到CI的不一致继电器数据
* 参数说明： void
* 返回值  ： 0:处理失败
*			 1:处理成功
*/
void ProcessOcToCiRelayDiffData(void);

#ifdef __cplusplus
}
#endif

#endif
