/********************************************************
*                                                                                                            
* 文 件 名： FloodGateDataManage.c   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2020-6-24
* 作    者： 联锁组
* 功能描述： 防淹门动态数据管理  
* 修改记录：   
*
********************************************************/ 

#include "FloodGateDataManage.h"
#include "CommonMemory.h"


FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX];   /*定义防淹门动态数据*/


/*
* 功能描述： 获取防淹门数据结构体指针
* 参数说明：    
* 返回值  ： 
            FloodGateDataStruct *  
*/
FloodGateDataStruct *GetFloodGateData(void)
{
    return FloodGateDataStru;
}


/*
* 功能描述： 获取指定ID防淹门开门锁闭状态
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门开门锁闭状态
*/
UINT8 GetFloodGateCurOpenLockState(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取自动折返数组下标*/

	if (0u < bufIndex)
	{
		reVal = FloodGateDataStru[bufIndex].CurOpenLockStateFromFYM;
	}
	else
	{
	    /*无操作*/
	}

	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门开门锁闭状态
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 1: 成功
*			 0u: 失败
*/
UINT8 SetFloodGateCurOpenLockState(const UINT16 floodGateId,const UINT8 openLockSt)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = CI_ERROR;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取自动折返数组下标*/

	if (0u < bufIndex) 
	{
		if ((FLOOD_GATE_OPENLOCK == openLockSt) || (FLOOD_GATE_NOT_OPENLOCK == openLockSt))
		{/*开启锁闭状态必须为【开启锁闭】或【未开启锁闭】*/
			FloodGateDataStru[bufIndex].CurOpenLockStateFromFYM = openLockSt;
			reVal = CI_SUCCESS;
		} 
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}


/*
* 功能描述： 获取指定ID防淹门关门请求状态
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门关门请求状态
*/
UINT8 GetFloodGateCurCloseRequestSta(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex) 
	{
		reVal = FloodGateDataStru[bufIndex].CurCloseRequestStateFromFYM;
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门关门请求状态
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 1: 成功
*			 0u: 失败
*/
UINT8 SetFloodGateCurCloseRequestSta(const UINT16 floodGateId,const UINT8 closeReqSt)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = CI_ERROR;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex) 
	{
		if ((FLOOD_GATE_CLOSEREQ == closeReqSt) || (FLOOD_GATE_NOT_CLOSEREQ == closeReqSt))
		{/*关门请求状态必须为【关门请求】或【无关门请求】*/
			FloodGateDataStru[bufIndex].CurCloseRequestStateFromFYM = closeReqSt;
			reVal = CI_SUCCESS;
		}
		
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}



/*
* 功能描述： 获取指定ID防淹门当前同意关门输出状态
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门同意关门状态
*/
UINT8 GetFloodGateCurAgreeCloseOutSta(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex) 
	{
		reVal = FloodGateDataStru[bufIndex].CurAgreeCloseStateOut;
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门当前同意关门输出状态
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 1: 成功
*			 0u: 失败
*/
UINT8 SetFloodGateCurAgreeCloseOutSta(const UINT16 floodGateId,const UINT8 agreeCloseSt)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = CI_ERROR;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex) 
	{
		if ((FLOOD_GATE_AGREE_CLOSE == agreeCloseSt) || (FLOOD_GATE_NOT_AGREE_CLOSE == agreeCloseSt))
		{/*同意关门的输出状态必须为【同意关闭】或【不同意关闭】*/
			FloodGateDataStru[bufIndex].CurAgreeCloseStateOut = agreeCloseSt;
			reVal = CI_SUCCESS;
		}
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}


/*
* 功能描述： 获取指定ID防淹门zc回复关门许可
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门关门请求状态
*/
UINT8 GetFloodGateCurZCAgrCloseAck(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		reVal = FloodGateDataStru[bufIndex].CurAgreeCloseAckFromZC;
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门zc回复关门许可
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 1: 成功
*			 0u: 失败
*/
UINT8 SetFloodGateCurZCAgrCloseAck(const UINT16 floodGateId,const UINT8 allowCloseSt)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = CI_ERROR;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		if ((FLOOD_GATE_ALLOWCLOSE_ZC == allowCloseSt) || (FLOOD_GATE_NOT_ALLOWCLOSE_ZC == allowCloseSt))
		{/*关门许可的状态必须为【允许关门】或【不允许关门】*/
			FloodGateDataStru[bufIndex].CurAgreeCloseAckFromZC = allowCloseSt;
			reVal = CI_SUCCESS;
		}
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}


/*
* 功能描述： 获取指定ID防淹门当前同意关门采集状态
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门同意关门状态
*/
UINT8 GetFloodGateCurAgreeCloseSta(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex) 
	{
		reVal = FloodGateDataStru[bufIndex].CurAgreeCloseStateIn;
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门当前同意关门采集状态
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 1: 成功
*			 0u: 失败
*/
UINT8 SetFloodGateCurAgreeCloseSta(const UINT16 floodGateId,const UINT8 agreeCloseSt)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = CI_ERROR;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex) 
	{
		if ((FLOOD_GATE_AGREE_CLOSE == agreeCloseSt) || (FLOOD_GATE_NOT_AGREE_CLOSE == agreeCloseSt))
		{/*同意关门的采集状态必须为【同意关闭】或【不同意关闭】*/
			FloodGateDataStru[bufIndex].CurAgreeCloseStateIn = agreeCloseSt;
			reVal = CI_SUCCESS;
		}
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}


/*
* 功能描述： 获取指定ID防淹门当前逻辑上的关门状态
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门状态
*/
UINT8 GetFloodGateCurLogicCloseState(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/

	UINT8 floodStateKS = 0u;/*开启锁闭*/
	UINT8 floodStateGQ = 0u;/*关门请求*/
	UINT8 floodStateYG = 0u;/*运行关闭*/

	UINT8 reVal = FLOOD_GATE_CLOSE;/*初始化为防淹门关门*/

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex) 
	{
		/*非开启锁闭 或 有关门请求 或 采到允许关闭，三种情况任意之一，均视为防淹门状态为关闭*/

		floodStateKS = FloodGateDataStru[bufIndex].CurOpenLockStateFromFYM;
		floodStateGQ = FloodGateDataStru[bufIndex].CurCloseRequestStateFromFYM;
		floodStateYG = FloodGateDataStru[bufIndex].CurAgreeCloseStateIn;

		if (FLOOD_GATE_OPENLOCK == floodStateKS)
		{
			reVal = FLOOD_GATE_OPEN;/*开启锁闭为开门，除此之外导向安全侧(如0u值)，认为是关门*/
		}
		else
		{
			reVal = FLOOD_GATE_CLOSE;
		}

		if (FLOOD_GATE_OPEN == reVal)
		{
			if (FLOOD_GATE_NOT_CLOSEREQ == floodStateGQ)
			{
				reVal = FLOOD_GATE_OPEN;/*无关门请求为开门，除此之外导向安全侧(如0u值)，认为是关门*/
			}
			else
			{
				reVal = FLOOD_GATE_REQ_CLOSE;
			}
		}
		else
	    {
	        /*无操作*/
	    }

		if (FLOOD_GATE_OPEN == reVal)
		{
			if (FLOOD_GATE_NOT_AGREE_CLOSE == floodStateYG)
			{
				reVal = FLOOD_GATE_OPEN;/*无同意关闭为开门，除此之外导向安全侧(如0u值)，认为是关门*/
			}
			else
			{
				reVal = FLOOD_GATE_ALLOW_CLOSE;
			}
		}
		else
	    {
	        /*无操作*/
	    }
		
	}
	else
	{
	    /*无操作*/
	}
	return reVal;
}


/*
* 功能描述： 获取指定ID防淹门YGJ混线开始时间
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门混线开始时间
*/
UINT32 GetFloodGateCurYGJCrosLStartCnt(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT32 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex) 
	{
		reVal = FloodGateDataStru[bufIndex].CurYGJCrossLineStartCount;
	}
    else
	{
	    /*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门YGJ混线开始时间
* 参数说明： const UINT16 floodGateId, 防淹门ID    
* 返回值  ： 1: 成功
*			 0u: 失败
*/
UINT8 SetFloodGateCurYGJCrosLStartCnt(const UINT16 floodGateId,const UINT32 crossLineStartCount)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = CI_ERROR;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex) 
	{
		FloodGateDataStru[bufIndex].CurYGJCrossLineStartCount = crossLineStartCount;
		reVal = CI_SUCCESS;
	}
    else
	{
	    /*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 获取指定ID防淹门防淹门接近区段占压延时关门开始时间
* 参数说明： const UINT16 floodGateId, 防淹门ID
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门混线开始时间
*/
UINT32 GetFloodGateDelayCloseStartCnt(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT32 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		reVal = FloodGateDataStru[bufIndex].CurFloodGateDelayCloseStartCyc;
	}
	else
	{
		/*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门防淹门接近区段占压延时关门开始时间
* 参数说明： const UINT16 floodGateId, 防淹门ID
*			 const UINT32 floodGateDelayCloseStartCount		延迟关门起始周期
* 返回值  ： void
*/
void SetFloodGateDelayCloseStartCnt(const UINT16 floodGateId, const UINT32 floodGateDelayCloseStartCount)
{
	UINT16 bufIndex = 0u;  /*数组下标*/

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		FloodGateDataStru[bufIndex].CurFloodGateDelayCloseStartCyc = floodGateDelayCloseStartCount;
	}
	else
	{
		/*无操作*/
	}
}

/*
* 功能描述： 获取指定ID防淹门关门申请列车数量
* 参数说明： const UINT16 floodGateId, 防淹门ID
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门关门申请列车数量
*/
UINT8 GetFloodGateCloseApplyIvocSum(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		reVal = FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocSum;
	}
	else
	{
		/*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门关门申请列车数量
* 参数说明： const UINT16 floodGateId, 防淹门ID
*			 const UINT8 wTrainSum ,防淹门关门申请列车数量
* 返回值  ： void
*/
void SetFloodGateCloseApplyIvocSum(const UINT16 floodGateId, const UINT8 wTrainSum)
{
	UINT16 bufIndex = 0u;  /*数组下标*/

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocSum = wTrainSum;
	}
	else
	{
		/*无操作*/
	}
}
/*
* 功能描述： 获取指定ID防淹门关门申请列车ID
* 参数说明： const UINT16 floodGateId, 防淹门ID
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门关门申请列车ID
*/
UINT16* GetFloodGateCloseApplyIvocId(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT16 *applyIvocBuf = NULL;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		applyIvocBuf = FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId;
	}
	else
	{
		/*无操作*/
	}
	return applyIvocBuf;
}

/*
* 功能描述： 设置指定ID防淹门关门申请列车ID
* 参数说明： const UINT16 floodGateId, 防淹门ID
*			 const UINT16* applyIvocBuf	，申请的列车ID地址
* 返回值  ： void
*/
void SetFloodGateCloseApplyIvocId(const UINT16 floodGateId, const UINT16* applyIvocBuf)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		(void)CommonMemSet(FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId,
			(UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX),
			0U, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX));			/*先出清，防止脏数据*/

		(void)CommonMemCpy(FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId,		/*赋值申请的列车ID*/
			(UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX),
			applyIvocBuf, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX));
	}
}

/*
* 功能描述： 获取指定ID防淹门列车同意防淹门关门请求结构体
* 参数说明： const UINT16 floodGateId, 防淹门ID
* 返回值  ： 0: 获取数据失败
*			>0: 列车同意防淹门关门请求结构体
*/
FloodGateTrainAnsStruct* GetFloodGateCloseFromIvocStru(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	FloodGateTrainAnsStruct* retVal = NULL;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		retVal = FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru;
	}
	else
	{
		retVal = NULL;
	}
	return retVal;
}


/*
* 功能描述： 设置指定ID防淹门列车同意防淹门关门请求标志
* 参数说明： UINT16 floodGateId, 防淹门ID
*			 UINT16 wTrainId, 列车ID
*			 UINT8 agreeFlag	允许关门标志
* 返回值  ： void
*/
void SetFloodGateAllowCloseFlagIVOC(UINT16 floodGateId, UINT16 wTrainId, UINT8 agreeFlag)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 trainSumIndex = 0U;
	UINT8 ii = 0U;
	UINT8 retVal = CI_ERROR;
	UINT8 chIvocSum = 0U;
	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/
	chIvocSum = GetFloodGateCloseAnsIvocSum(floodGateId);		/*获取当前已经同意的列车数量*/

	if ((0u < bufIndex) && ((FLOOD_GATE_ALLOWCLOSE_IVOC == agreeFlag) || (FLOOD_GATE_NOT_ALLOWCLOSE_IVOC == agreeFlag)))
	{
		if (FLOOD_GATE_ALLOWCLOSE_IVOC == agreeFlag)
		{
			/*同意的才需要计入，未同意的，继续等待*/
			retVal = CI_SUCCESS;
			trainSumIndex = chIvocSum;
			for (ii = 0U; ii < chIvocSum; ii++)
			{
				if (FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId == wTrainId)
				{
					retVal = CI_ERROR;	/*已存入过的列车,且回复了，不再存入*/
					break;
				}
			}

			if (CI_SUCCESS == retVal)
			{
				FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wTrainId = wTrainId;
				FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wFloodGateCloseIvocFlag = agreeFlag;		/*检查标志的时候，查所有起始周期询问的列车是否都回复了同意*/
				chIvocSum++;
				SetFloodGateCloseAnsIvocSum(floodGateId, chIvocSum);
			}
		}
		else
		{
			;	/*未同意，不计入*/
		}
	}
	else
	{
		/*无操作*/
	}
}

/*
* 功能描述： 清除指定ID防淹门列车同意防淹门关门请求标志
* 参数说明： UINT16 floodGateId, 防淹门ID
* 返回值  ： void
*/
void ClearFloodGateAllowClosFlagIVOC(UINT16 floodGateId)
{
	UINT8 chIvocSum = 0U;
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 ii = 0U;

	chIvocSum = GetFloodGateCloseAnsIvocSum(floodGateId);		/*获取当前已经同意的列车数量*/
	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/
	if ((0U < bufIndex) && (0U < chIvocSum))
	{
		for (ii = 0U; ii < chIvocSum; ii++)
		{
			FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId = 0U;
			FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wFloodGateCloseIvocFlag = FLOOD_GATE_NOT_ALLOWCLOSE_IVOC;
		}
		SetFloodGateCloseAnsIvocSum(floodGateId, 0U);
	}
}
/*
* 功能描述： 获取指定ID防淹门接近区段是否有UT占压标志
* 参数说明： const UINT16 floodGateId, 防淹门ID
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门接近区段是否有UT占压标志
*/
UINT8 GetFloodGateAccessUTFlag(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		reVal = FloodGateDataStru[bufIndex].FloodGateAccessUTFlag;
	}
	else
	{
		/*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门接近区段是否有UT占压标志
* 参数说明： const UINT16 floodGateId, 防淹门ID
*			 const UINT8 accessUTFlag，是否有UT占压标志
* 返回值  ： void
*/
void SetFloodGateAccessUTFlag(const UINT16 floodGateId, const UINT8 accessUTFlag)
{
	UINT16 bufIndex = 0u;  /*数组下标*/

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		if ((FLOOD_GATE_ACCESS_UT_YES == accessUTFlag) || (FLOOD_GATE_ACCESS_UT_NO == accessUTFlag))
		{/*混跑或者纯CT跑*/
			FloodGateDataStru[bufIndex].FloodGateAccessUTFlag = accessUTFlag;
		}
	}
	else
	{
		/*无操作*/
	}
}
/*
* 功能描述： 获取指定ID防淹门列车回复允许关门列车数量
* 参数说明： const UINT16 floodGateId, 防淹门ID
* 返回值  ： 0u: 获取数据失败
*			>0u: 防淹门列车回复允许关门列车数量
*/
UINT8 GetFloodGateCloseAnsIvocSum(const UINT16 floodGateId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = 0u;

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		reVal = FloodGateDataStru[bufIndex].FloodGateCloseAnsIvocSum;
	}
	else
	{
		/*无操作*/
	}
	return reVal;
}

/*
* 功能描述： 设置指定ID防淹门列车回复允许关门列车数量
* 参数说明： const UINT16 floodGateId, 防淹门ID
*			 const UINT8 wTrainSum ,列车回复允许关门列车数量
* 返回值  ： void
*/
void SetFloodGateCloseAnsIvocSum(const UINT16 floodGateId, const UINT8 wTrainSum)
{
	UINT16 bufIndex = 0u;  /*数组下标*/

	bufIndex = GetFloodGateBufIndex(floodGateId);  /*获取防淹门数组下标*/

	if (0u < bufIndex)
	{
		FloodGateDataStru[bufIndex].FloodGateCloseAnsIvocSum = wTrainSum;
	}
	else
	{
		/*无操作*/
	}
}

