/********************************************************
*                                                                                                            
* 文 件 名： NonRouteDataManage.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2011-05-03
* 作    者： 郭文章
* 功能描述： 非进路调车数据管理函数的头文件  
* 函数包括：
* 使用注意：
* 修改记录：   
*
********************************************************/ 

#ifndef _NONROUTE_DATA_MANAGE_H_
#define _NONROUTE_DATA_MANAGE_H_

#include "CommonTypes.h"
#include "NonRouteDefine.h"
#include "../2oo2/2oo2InterfaceDataManage.h"
#include "../System/CiSystemDefine.h"




#ifdef __cplusplus
extern "C" {
#endif

/*非进路调车数据结构体*/
typedef struct S_NonRouteDataStruct
{
	UINT8 NonRouteId;	/*非进路Id*/
	UINT8 NonRouteState; /*非进路状态 0x11:非进路空闲 0x22:非进路选排 0x44:非进路锁闭 (动态字段)*/
	UINT8 CancelFlag; /*取消标志 0x55:未取消 0xaa:取消*/
	UINT8 HaveCancelFlag; /*取消过标志 0x55:没有取消过 0xaa:取消过*/
	UINT32 XuanPaiStartCycleNum; /*选排起始周期 (动态字段)*/
    UINT32 SigOpenStartCycleNum; /*信号开放起始周期 (动态字段)*/
	UINT32 DelayUnlockStartCycleNum; /*当前非进路解锁延时周期 (动态字段)*/
	UINT8 RunMode; /*运行模式标志*/
} NonRouteDataStruct;

extern NonRouteDataStruct NonRouteDataStruArr[NONROUTE_ID_NUM_MAX];/*非进路数据结构体数组*/
	/*
	* 功能描述： 获取非进路数组首元素指针
	* 参数说明： void
	* 返回值  ： 非进路数组首元素指针   
	*/
	NonRouteDataStruct* GetNonRouteDataPtr(void);

	/*
	* 功能描述： 获取对应id的非进路结构体指针
	* 参数说明： void
	* 返回值  ： 非进路结构体指针   
	*/
	NonRouteDataStruct* GetNonRouteDataById(UINT8 nonRouteId);

	/*
	* 功能描述： 获取指定非进路ID的非进路调车状态
	* 参数说明： nonRouteDiaocheID:非进路调车ID    
	* 返回值  ： NONROUTE_STATE_IDLE   		: 非进路空闲
	*			 NONROUTE_STATE_XUANPAI		: 非进路选排
	* 			 IDNONROUTE_STATE_LOCK 		: 非进路锁闭
				 NONROUTE_STATE_DELAY_UNLOCK: 非进路延时解锁
	*			 0                          : 数据无效    
	*/
	UINT8 GetNonRouteStateById(const UINT8 nonRouteDiaocheID);

	/*
	* 功能描述： 设置非进路调车状态
	* 参数1说明：const UINT8 nonRouteId，非进路id
	* 参数2说明： const UINT8 nonRouteState, 非进路状态    
	* 返回值  ： 1:设置成功 
	*			 0:设置失败
	*/
	UINT8 SetNonRouteStateById(const UINT8 nonRouteId,const UINT8 nonRouteStateToSet);


	/*
	* 功能描述： 获取非进路选排开始时间
	* 参数说明： void   
	* 返回值  ： 选排开始时间
	*/
	UINT32 GetNonRouteXuanPaiStartCycById(UINT8 nonRouteId);


	/*
	* 功能描述： 设置非进路信号开放起始周期
	* 参数说明： const UINT32 sigOpenStartCycleNum, 信号开放起始周期
	* 返回值  ： void
	*/
	void SetNonRouteSigOpenStartCycById(const UINT8 nonRouteId, const UINT32 sigOpenStartCycleNum);


	/*
	* 功能描述： 获取非进路调车当前延时解锁时间
	* 参数说明： void    
	* 返回值  ： 非进路调车当前延时解锁时间
	*/
	UINT32 GetNonRouteDelayUnlockStartCyc(const UINT8 nonRouteId);


	/*
	* 功能描述： 设置非进路调车当前延时解锁时间
	* 参数说明： const UINT16 curDelayTime: 当前延时时间    
	* 返回值  ： void
	*/
	void SetNonRouteDelayUnlockStartCyc(const UINT8 nonRouteId,const UINT32 delayTimeStartCycleNum);


	/*
	* 功能描述： 获取非进路取消标志
	* 参数说明： void    
	* 返回值  ： 非进路取消标志   
	*/
	UINT8 GetNonRouteCancelFlagById(const UINT8 nonRouteId);


	/*
	* 功能描述： 设置非进路取消标志
	* 参数说明： const UINT8 cancelFlag, 取消标志    
	* 返回值  ： 0: 取消失败
	*			 1: 取消成功
	*/
	UINT8 SetNonRouteCancelFlagById(const UINT8 nonRouteId,const UINT8 cancelFlag);


	/*
	* 功能描述： 获取非进路故障取消过标志
	* 参数说明： void    
	* 返回值  ： 非进路取消过标志   
	*/
	UINT8 GetNonRouteHaveCancelFlagById(const UINT8 nonRouteId);


	/*
	* 功能描述： 设置非进路故障取消过标志
	* 参数说明： const UINT8 cancelFlag, 取消标志    
	* 返回值  ： 0: 取消失败
	*			 1: 取消成功
	*/
	UINT8 SetNonRouteHaveCancelFlagById(const UINT8 nonRouteId,const UINT8 haveCancelFlag);


	/*
	* 功能描述： 获取非进路试车模式
	* 参数说明： void    
	* 返回值  ：    
	*/
	UINT8 GetNonRouteRunModeById(const UINT8 nonRouteId);


	/*
	* 功能描述： 设置非进路试车模式
	* 参数说明： const UINT8 cancelFlag, 取消标志    
	* 返回值  ： 0: 取消失败
	*			 1: 取消成功
	*/
	UINT8 SetNonRouteRunModeById(const UINT8 nonRouteId,const UINT8 runFlag);


	/*
	* 功能描述： 获取对应id的非进路信号机开放起始周期
	* 参数说明： nonRouteId - 非进路id    
	* 返回值  ： 起始周期
	*/
	UINT32 GetNonRouteSigOpenStartCycById(const UINT8 nonRouteId);

#ifdef __cplusplus
}
#endif

#endif
