/********************************************************
*                                                                                                            
* 文 件 名： ESBDataManage.c   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2012-03-20
* 作    者： 联锁组
* 功能描述： 紧急停车按钮数据管理  
* 修改记录：   
*
********************************************************/ 

#include "ESBDataManage.h"
#include "ESBConfigDataManage.h"

EsbDataStruct EsbDataStru[ESB_SUM_MAX];   /*定义ESB数据结构体*/


/*
* 功能描述： 获取指定ESB数据
* 参数说明：    
* 返回值  ： 
            EsbDataStruct *  
*/
EsbDataStruct *GetEsbData(void)
{
    return EsbDataStru;
}

/*
* 功能描述： 获取指定ID紧急停车按钮状态
* 参数说明： const UINT16 esbId, 紧急停车按钮ID    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮状态      
*/
UINT8 GetEsbState(const UINT16 esbId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		reVal = EsbDataStru[bufIndex].EsbState;
	}
	return reVal;
}


/*
* 功能描述： 设置指定ID紧急停车按钮状态
* 参数说明： const UINT16 esbId, 紧急按钮ID
*			 const UINT8 esbState, 紧急按钮状态   
* 返回值  ： 0: 设置失败
*			 1: 设置成功  
*/
UINT8 SetEsbState(const UINT16 esbId, const UINT8 esbState)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		if ((ESB_STATE_VALID_NO == esbState) || (ESB_STATE_VALID_YES == esbState))
		{
			EsbDataStru[bufIndex].EsbState = esbState;  /*紧急停车按钮状态*/

			reVal = CI_SUCCESS;
		}
	}
	return reVal;
}

/*
* 功能描述： 获取指定ID 紧急停车按钮旁路状态
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: spks按钮状态
*/
UINT8 GetEsbCutState(const UINT16 esbId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 status = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		status = EsbDataStru[bufIndex].CutStatus;
	}

	return status;
}

/*
* 功能描述： 设置指定ID 旁路状态
* 参数说明： const UINT16 esbId, 紧急停车按钮
*			 const UINT8 esbCutState, 旁路状态
* 返回值  ： 无
*			  
*/
void SetEsbCutState(const UINT16 esbId, const UINT8 esbCutState)
{
	UINT16 bufIndex = 0u;  /*数组下标*/

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		if ((ESB_CUT_NO == esbCutState) || (ESB_CUT_YES == esbCutState))
		{
			EsbDataStru[bufIndex].CutStatus = esbCutState;
		}
		else
		{
			/*不做处理*/
		}
	}
	else
	{
		/*不做处理*/
	}
}

/*
* 功能描述： ESB状态初始化
* 参数说明： 无
* 返回值  ： 0: 设置失败
*			 1: 设置成功
*/
UINT8 EsbDataManageInit(void)
{
	UINT8 rtn = CI_ERROR; /*返回值*/
	UINT16 esbNum = 0u; /*ESB数量*/
	UINT16 i = 0u; /*用于循环*/
	UINT16 esbId = 0u; /*ESB ID*/
	UINT8 chEsbVirAttribute = 0u;
	esbNum = GetTotalEsbCurNum();

	for (i = 0u; i < esbNum; i++)
	{
		esbId = GetEsbId(i);
		chEsbVirAttribute = GetEsbVirtualAttribute(esbId);
		if (ESB_VIRTUAL_ATTR_YES == chEsbVirAttribute)
		{/*虚拟ESB，初始化为未按下*/
			EsbDataStru[esbId].EsbState = ESB_STATE_VALID_NO;
			EsbDataStru[esbId].EssState = ESB_STATE_GO_FLAG;
			EsbDataStru[esbId].EsbActualState = ESB_STATE_VALID_NO;
		}
		else
		{/*非虚拟ESB，初始化为按下*/
			EsbDataStru[esbId].EsbState = ESB_STATE_VALID_YES;
			EsbDataStru[esbId].EssState = ESB_STATE_STOP_FLAG;
			EsbDataStru[esbId].EsbActualState = ESB_STATE_VALID_YES;
		}
		EsbDataStru[esbId].EssSteadyState = ESB_STATE_LIGHT_STATE_N;/*ESS稳灯状态未设置*/
		EsbDataStru[esbId].EssFlashState = ESB_STATE_LIGHT_STATE_N;/*ESS闪灯状态未设置*/
		EsbDataStru[esbId].CutStatus = ESB_CUT_NO;       /*ESB旁路未按下*/
		EsbDataStru[esbId].EsbRelateRelayDriveState = ESB_PEPUP_ESSUP_INITION_STA;  /*PEP和ESS都无效*/
		EsbDataStru[esbId].EsbErrorFlag = ESB_ERROR_FLAG_NO;     /*自复式ESB未故障*/
		EsbDataStru[esbId].EsbRelayDownState = ESB_RELAY_ERROR_DOWN_YES;   /*紧急关闭按钮采集继电器落下状态初始化为通信异常落下*/
		EsbDataStru[esbId].CancelEsbErrorFlag = ESB_ERROR_FLAG_NO;     /*自复式取消ESB未故障*/
		EsbDataStru[esbId].EsbPressCycNum = 0U;   /*紧急关闭按钮按下周期*/
		EsbDataStru[esbId].CancelEsbPressCycNum = 0U;   /*取消紧急关闭按钮按下周期*/
		EsbDataStru[esbId].CancelEsbErrTriggerPressCycNum = 0U;   /*取消紧急关闭按钮误触发按下周期*/
		EsbDataStru[esbId].CancelEsbValidFlag = ESB_CANCEL_VALID_NO;   /*取消紧急关闭按钮有效标志*/
		EsbDataStru[esbId].CancelEsbRelayDownState = ESB_RELAY_ERROR_DOWN_YES;   /*取消紧急关闭按钮采集继电器落下状态初始化为通信异常落下*/
		EsbDataStru[esbId].EsbCutPressCycNum = 0U;   /*紧急关闭旁路按钮按下周期*/
		EsbDataStru[esbId].EsbCutErrTriggerPressCycNum = 0U;   /*紧急关闭旁路按钮误触发按下周期*/
		EsbDataStru[esbId].EsbCutErrorFlag = ESB_ERROR_FLAG_NO;     /*紧急关闭旁路按钮未故障*/
		EsbDataStru[esbId].EsbCutRelayDownState = ESB_RELAY_ERROR_DOWN_YES;   /*紧急关闭旁路按钮采集继电器落下状态初始化为通信异常落下*/
	}
	rtn = CI_SUCCESS;
	return rtn;
}

/*
* 功能描述： 设置指定ESB ID相关继电器驱动处理状态机
* 参数说明： const UINT16 esbId, 紧急停车按钮
*			 const UINT8 state, 状态机
* 返回值  ： 无
* cgh-合并CID-2349-1：
*/
void SetEsbRelateRelayDriveProState(const UINT16 esbId, const UINT8 state)
{
	UINT16 bufIndex = 0U;  /*数组下标*/

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		/*设置状态是6个状态机中的一个则设置*/
		if ((ESB_PEPUP_ESSUP_INITION_STA == state) || (ESB_PEPDOWN_ESSUP_TWO_STATE == state) || (ESB_PEPDOWN_ESSDOWN_THREE_STATE == state)
			|| (ESB_ONEPEPUP_ESSDOWN_FOUR_STATE == state) || (ESB_TWOPEPUP_ESSDOWN_FIVE_STATE == state) || (ESB_FAULT_SIX_STATE == state))
		{
			EsbDataStru[bufIndex].EsbRelateRelayDriveState = state;
		}
		else
		{
			/*不做处理*/
		}
	}
	else
	{
		/*不做处理*/
	}
}

/*
* 功能描述： 获取指定ESB ID相关继电器驱动处理状态机
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: esb相关继电器驱动处理状态机
* cgh-合并CID-2349-1：
*/
UINT8 GetEsbRelateRelayDriveProState(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;  /*数组下标*/
	UINT8 status = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		status = EsbDataStru[bufIndex].EsbRelateRelayDriveState;
	}

	return status;
}

/*
* 功能描述： 设置指定ESB ID对应的ESS稳灯状态
* 参数说明： const UINT16 esbId, 紧急停车按钮
*			 const UINT8 state, 状态机
* 返回值  ： 无
* cgh-合并CID-2349-1\cgh-合并CID-3037-1：：
*/
void SetEsbRelateEssSteadyState(const UINT16 esbId, const UINT8 state)
{
	UINT16 bufIndex = 0U;  /*数组下标*/

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		if ((ESB_STATE_LIGHT_STATE_Y == state) || (ESB_STATE_LIGHT_STATE_N == state))
		{
			EsbDataStru[bufIndex].EssSteadyState = state;
		}
		else
		{
			/*不做处理*/
		}
	}
	else
	{
		/*不做处理*/
	}
}
/*
* 功能描述： 获取指定ESB ID对应的ESS稳灯状态
* 参数说明： const UINT16 esbId, 紧急停车按钮
* 返回值  ： 无
* 备注：cgh-合并CID-2349-1\cgh-合并CID-3037-1：：
*/
UINT8 GetEsbRelateEssSteadyState(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;  /*数组下标*/
	UINT8 chEssSteadyState = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/
	if (bufIndex < ESB_SUM_MAX)
	{

		chEssSteadyState = EsbDataStru[bufIndex].EssSteadyState;
	}
	else
	{
		/*不做处理*/
	}
	return chEssSteadyState;
}


/*
* 功能描述： 设置指定ESB ID对应的ESS闪灯状态
* 参数说明： const UINT16 esbId, 紧急停车按钮
*			 const UINT8 state, 状态机
* 返回值  ： 无
* 备注：cgh-合并CID-2349-1：
*/
void SetEsbRelateEssFlashState(const UINT16 esbId, const UINT8 state)
{
	UINT16 bufIndex = 0U;  /*数组下标*/

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		if ((ESB_STATE_LIGHT_STATE_Y == state) || (ESB_STATE_LIGHT_STATE_N == state))
		{
			EsbDataStru[bufIndex].EssFlashState = state;
		}
		else
		{
			/*不做处理*/
		}
	}
	else
	{
		/*不做处理*/
	}
}

/*
* 功能描述： 获取指定ESB ID对应的ESS闪灯状态
* 参数说明： const UINT16 esbId, 紧急停车按钮
* 返回值  ： 无
* 备注：cgh-合并CID-2349-1：
*/
UINT8 GetEsbRelateEssFlashState(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;  /*数组下标*/
	UINT8 chEssFlashState = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/
	if (bufIndex < ESB_SUM_MAX)
	{

		chEssFlashState = EsbDataStru[bufIndex].EssFlashState;
	}
	else
	{
		/*不做处理*/
	}
	return chEssFlashState;
}
/*
* 功能描述： 设置指定ID紧急停车按钮实际状态（根据ATS按钮状态设置-虚拟属性具备）
* 参数说明： const UINT16 esbId, 紧急按钮ID
*			 const UINT8 esbState, 紧急按钮状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功
* cgh-合并CID-2349-1\cgh-合并CID-3037-1：：
* 
*/
void SetEsbAutualState(const UINT16 esbId, const UINT8 EsbState)
{
	UINT16 bufIndex = 0U;  /*数组下标，m by yt，修改MISRA2004-10_1_h-3，2022年2月14日*/

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		if ((ESB_STATE_VALID_NO == EsbState) || (ESB_STATE_VALID_YES == EsbState))
		{
			EsbDataStru[bufIndex].EsbActualState = EsbState;  /*紧急停车按钮状态*/

		}
		else
		{
			; /*设置状态不合法，不执行状态更新*/
		}
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取指定ID紧急停车ESB按钮状态（根据ATS按钮状态设置-虚拟属性具备）
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: ESS按钮状态
*备注：cgh-合并CID-2349-1\GetEsbAutualState：
*/
UINT8 GetEsbAutualState(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		reVal = EsbDataStru[bufIndex].EsbActualState;
	}
	return reVal;
}


/*
* 功能描述： 获取指定ID紧急停车ESS按钮状态
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: ESS按钮状态
*备注：cgh-合并CID-2349-1\cgh-合并CID-3037-1：：
*/
UINT8 GetEssState(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		reVal = EsbDataStru[bufIndex].EssState;
	}
	return reVal;
}

/*
* 功能描述： 设置指定IDESS按钮状态
* 参数说明： const UINT16 esbId, 紧急按钮ID
*			 const UINT8 EssState, ESS按钮状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功
*备注：cgh-合并CID-2349-1\cgh-合并CID-3037-1：：
*/
void SetEssState(const UINT16 esbId, const UINT8 EssState)
{
	UINT16 bufIndex = 0U;  /*数组下标，m by yt，修改MISRA2004-10_1_h-3，2022年2月14日*/

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		if ((ESB_STATE_GO_FLAG == EssState) || (ESB_STATE_STOP_FLAG == EssState))
		{
			EsbDataStru[bufIndex].EssState = EssState;  /*紧急停车按钮状态*/
		}
		else
		{
			; /*设置状态不合法，不进项状态更新*/
		}
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取指定ID自复式取消紧急停车按钮故障标志
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 取消紧停按钮故障标志
*/
UINT8 GetCancelEsbErrFlag(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		reVal = EsbDataStru[bufIndex].CancelEsbErrorFlag;
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
	return reVal;
}

/*
* 功能描述：设置指定ID自复式取消紧急停车按钮故障标志
* 参数说明：const UINT16 esbId, 紧急停车按钮ID
*			const UINT8 cancelEsbErrFlag, 取消紧停按钮故障标志
* 返回值：无
*/
void SetCancelEsbErrFlag(const UINT16 esbId, const UINT8 cancelEsbErrFlag)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		if ((ESB_ERROR_FLAG_NO == cancelEsbErrFlag) || (ESB_ERROR_FLAG_YES == cancelEsbErrFlag))
		{
			EsbDataStru[bufIndex].CancelEsbErrorFlag = cancelEsbErrFlag;  /*紧急停车按钮状态*/
		}
		else
		{
			; /*设置状态不合法，不进项状态更新*/
		}
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 设置紧急关闭按钮按下周期
* 输入参数： const UINT16 esbId  Esb ID
*            const UINT32 startCycNum 周期号
* 输出参数：无
* 返回值  ：无
*/
void SetEsbPressCycNum(const UINT16 esbId, const UINT32 startCycNum)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		EsbDataStru[bufIndex].EsbPressCycNum = startCycNum;  /*紧急停车按钮状态*/
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取紧急关闭按钮按下周期
* 输入参数： const UINT16 esbId  Esb ID
* 输出参数： 无
* 返回值  ： ESB按下周期
*/
UINT32 GetEsbPressCycNum(const UINT16 esbId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT32 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		reVal = EsbDataStru[bufIndex].EsbPressCycNum;
	}
	else
	{
		/*下标非法，返回0*/
	}
	return reVal;
}

/*
* 功能描述： 设置取消紧急关闭按钮按下周期
* 输入参数： const UINT16 esbId  Esb ID
*            const UINT32 startCycNum 周期号
* 输出参数：无
* 返回值  ：无
*/
void SetCancelEsbPressCycNum(const UINT16 esbId, const UINT32 startCycNum)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		EsbDataStru[bufIndex].CancelEsbPressCycNum = startCycNum;  /*紧急停车按钮状态*/
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取取消紧急关闭按钮按下周期
* 输入参数： const UINT16 esbId  Esb ID
* 输出参数： 无
* 返回值  ： 取消紧急关闭按钮按下周期
*/
UINT32 GetCancelEsbPressCycNum(const UINT16 esbId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT32 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		reVal = EsbDataStru[bufIndex].CancelEsbPressCycNum;
	}
	else
	{
		/*下标非法，返回0*/
	}
	return reVal;
}

/*
* 功能描述： 获取指定ID自复式取消紧急停车按钮有效标志
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取失败
*			>0: 取消紧急停车按钮有效标志
*/
UINT8 GetCancelEsbValidFlag(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		reVal = EsbDataStru[bufIndex].CancelEsbValidFlag;
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
	return reVal;
}

/*
* 功能描述：设置指定ID自复式取消紧急停车按钮有效标志
* 参数说明：const UINT16 esbId, 紧急停车按钮ID
*			const UINT8 cancelEsbValidFlag, 取消紧停按钮有效标志
* 返回值：无
*/
void SetCancelEsbValidFlag(const UINT16 esbId, const UINT8 cancelEsbValidFlag)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		if ((ESB_CANCEL_VALID_NO == cancelEsbValidFlag) || (ESB_CANCEL_VALID_YES == cancelEsbValidFlag))
		{
			EsbDataStru[bufIndex].CancelEsbValidFlag = cancelEsbValidFlag;  /*紧急停车按钮有效标志*/
		}
		else
		{
			; /*设置状态不合法，不进项状态更新*/
		}
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取指定ID自复式紧急停车按钮故障标志
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 紧停按钮故障标志
*/
UINT8 GetEsbErrFlag(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		reVal = EsbDataStru[bufIndex].EsbErrorFlag;
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
	return reVal;
}

/*
* 功能描述：设置指定ID自复式紧急停车按钮故障标志
* 参数说明：const UINT16 esbId, 紧急停车按钮ID
*			const UINT8 cancelEsbErrFlag, 紧停按钮故障标志
* 返回值：无
*/
void SetEsbErrFlag(const UINT16 esbId, const UINT8 esbErrFlag)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		if ((ESB_ERROR_FLAG_NO == esbErrFlag) || (ESB_ERROR_FLAG_YES == esbErrFlag))
		{
			EsbDataStru[bufIndex].EsbErrorFlag = esbErrFlag;  /*紧急停车按钮状态*/
		}
		else
		{
			; /*设置状态不合法，不进项状态更新*/
		}
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述：设置取消紧急关闭按钮误触发按下周期
* 输入参数：const UINT16 esbId  Esb ID
*           const UINT32 startCycNum 周期号
* 输出参数：无
* 返回值  ：无
* Created By LQ 2024.04.10
*/
void SetCancelEsbErrTrigPressCycNum(const UINT16 esbId, const UINT32 startCycNum)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		EsbDataStru[bufIndex].CancelEsbErrTriggerPressCycNum = startCycNum;
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取取消紧急关闭按钮误触发按下周期
* 输入参数： const UINT16 esbId  Esb ID
* 输出参数： 无
* 返回值  ： 取消紧急关闭按钮误触发按下周期
* Created By LQ 2024.04.10
*/
UINT32 GetCancelEsbErrTrigPressCycNum(const UINT16 esbId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT32 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		reVal = EsbDataStru[bufIndex].CancelEsbErrTriggerPressCycNum;
	}
	else
	{
		/*下标非法，返回0*/
	}

	return reVal;
}

/*
* 功能描述：设置取消紧急停车按钮采集继电器落下状态
* 参数说明：const UINT16 esbId 紧急停车按钮ID
*			const UINT8 cRelayDownState 继电器落下状态
* 返回值：无
* Created By LQ 2024.04.10
*/
void SetCancelEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		if ((ESB_RELAY_ERROR_DOWN_NO == cRelayDownState) || (ESB_RELAY_ERROR_DOWN_YES == cRelayDownState))
		{
			EsbDataStru[bufIndex].CancelEsbRelayDownState = cRelayDownState;
		}
		else
		{
			; /*设置状态不合法，不进项状态更新*/
		}
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取取消紧急停车按钮采集继电器落下状态
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 正常落下
*            0xaa: 通信异常落下
* Created By LQ 2024.04.10
*/
UINT8 GetCancelEsbRelayDownState(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		reVal = EsbDataStru[bufIndex].CancelEsbRelayDownState;
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}

	return reVal;
}

/*
* 功能描述：设置紧急关闭旁路按钮按下周期
* 输入参数：const UINT16 esbId  Esb ID
*           const UINT32 startCycNum 周期号
* 输出参数：无
* 返 回 值：无
* Cretaed By LQ 2025.03.28
*/
void SetEsbCutPressCycNum(const UINT16 esbId, const UINT32 startCycNum)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		EsbDataStru[bufIndex].EsbCutPressCycNum = startCycNum;  /*紧急旁路按钮正常按下起始周期*/
	}
	else
	{
		; /*不处理*/
	}
}

/*
* 功能描述：获取紧急关闭旁路按钮按下周期
* 输入参数：const UINT16 esbId  Esb ID
* 输出参数：无
* 返 回 值：紧急关闭旁路按钮按下周期
* Cretaed By LQ 2025.03.28
*/
UINT32 GetEsbCutPressCycNum(const UINT16 esbId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT32 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		reVal = EsbDataStru[bufIndex].EsbCutPressCycNum;
	}
	else
	{
		/*下标非法，返回0*/
	}

	return reVal;
}

/*
* 功能描述：设置紧急关闭旁路按钮误触发按下周期
* 输入参数：const UINT16 esbId  Esb ID
*           const UINT32 startCycNum 周期号
* 输出参数：无
* 返 回 值：无
* Cretaed By LQ 2025.03.28
*/
void SetEsbCutErrTrigPressCycNum(const UINT16 esbId, const UINT32 startCycNum)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		EsbDataStru[bufIndex].EsbCutErrTriggerPressCycNum = startCycNum;  /*紧急旁路按钮误触发按下周期*/
	}
	else
	{
		; /*不处理*/
	}
}

/*
* 功能描述：获取紧急关闭旁路按钮误触发按下周期
* 输入参数：const UINT16 esbId  Esb ID
* 输出参数：无
* 返 回 值：紧急关闭旁路按钮误触发按下周期
* Cretaed By LQ 2025.03.28
*/
UINT32 GetEsbCutErrTrigPressCycNum(const UINT16 esbId)
{
	UINT16 bufIndex = 0u;  /*数组下标*/
	UINT32 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		reVal = EsbDataStru[bufIndex].EsbCutErrTriggerPressCycNum;
	}
	else
	{
		/*下标非法，返回0*/
	}

	return reVal;
}

/*
* 功能描述：设置紧急关闭旁路按钮采集继电器落下状态
* 参数说明：const UINT16 esbId 紧急停车按钮ID
*			const UINT8 cRelayDownState 继电器落下状态
* 返回值：无
* Created By LQ 2025.03.28
*/
void SetEsbCutRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		if ((ESB_RELAY_ERROR_DOWN_NO == cRelayDownState) || (ESB_RELAY_ERROR_DOWN_YES == cRelayDownState))
		{
			EsbDataStru[bufIndex].EsbCutRelayDownState = cRelayDownState;
		}
		else
		{
			; /*设置状态不合法，不进项状态更新*/
		}
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取紧急关闭旁路按钮采集继电器落下状态
* 参数说明： const UINT16 esbId 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 正常落下
*            0xaa: 通信异常落下
* Created By LQ 2025.03.28
*/
UINT8 GetEsbCutRelayDownState(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		reVal = EsbDataStru[bufIndex].EsbCutRelayDownState;
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}

	return reVal;
}

/*
* 功能描述：设置指定ID紧急关闭旁路按钮故障标志
* 参数说明：const UINT16 esbId, 紧急关闭按钮ID
*			const UINT8 cEsbCutErrFlag 紧急关闭旁路按钮故障标志
* 返回值：无
* Created By LQ 2025.03.28
*/
void SetEsbCutErrFlag(const UINT16 esbId, const UINT8 cEsbCutErrFlag)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		if ((ESB_ERROR_FLAG_NO == cEsbCutErrFlag) || (ESB_ERROR_FLAG_YES == cEsbCutErrFlag))
		{
			EsbDataStru[bufIndex].EsbCutErrorFlag = cEsbCutErrFlag;
		}
		else
		{
			; /*设置状态不合法，不进项状态更新*/
		}
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取指定ID紧急关闭旁路按钮故障标志
* 参数说明： const UINT16 esbId, 紧急关闭按钮ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 未故障
*            0xaa: 故障
* Created By LQ 2025.03.28
*/
UINT8 GetEsbCutErrFlag(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (bufIndex < ESB_SUM_MAX)
	{
		reVal = EsbDataStru[bufIndex].EsbCutErrorFlag;
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
	return reVal;
}

/*
* 功能描述：设置紧急停车按钮采集继电器落下状态
* 参数说明：const UINT16 esbId 紧急停车按钮ID
*			const UINT8 cRelayDownState 继电器落下状态
* 返回值：无
* Created By LQ 2025.04.01
*/
void SetEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
{
	UINT16 bufIndex = 0U;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		if ((ESB_RELAY_ERROR_DOWN_NO == cRelayDownState) || (ESB_RELAY_ERROR_DOWN_YES == cRelayDownState))
		{
			EsbDataStru[bufIndex].EsbRelayDownState = cRelayDownState;
		}
		else
		{
			; /*设置状态不合法，不进项状态更新*/
		}
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}
}

/*
* 功能描述： 获取紧急停车按钮采集继电器落下状态
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 正常落下
*            0xaa: 通信异常落下
* Created By LQ 2025.04.01
*/
UINT8 GetEsbRelayDownState(const UINT16 esbId)
{
	UINT16 bufIndex = 0U;
	UINT8 reVal = CI_ERROR;

	bufIndex = GetEsbConfigBufIndex(esbId);  /*获取数组下标*/

	if (ESB_SUM_MAX > bufIndex)
	{
		reVal = EsbDataStru[bufIndex].EsbRelayDownState;
	}
	else
	{
		; /*数组下标不合法，不执行状态更新*/
	}

	return reVal;
}