/********************************************************
*                                                                                                            
* 文 件 名： LongRouteDataManage.c   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2012-03-13
* 作    者： 联锁组
* 功能描述： 长调进路数据管理  
* 修改记录：   
*
********************************************************/ 

#include "LongRouteDataManage.h"


LongRouteDataStruct LongRouteDataStru[ROUTE_LONG_SUM_MAX];   /*定义长调进路数据结构体*/






/*
* 功能描述： 获取指定ID进路状态
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： 0: 获取数据失败
*           >0: 进路状态
*/
UINT8 GetLongRouteState(const UINT16 routeId)
{
    UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 retVal = CI_ERROR;

    bufIndex = GetLongRouteConfigBufIndex(routeId);  /*获取道岔数组下标*/

    if (bufIndex < ROUTE_LONG_SUM_MAX)
    {
        retVal = LongRouteDataStru[bufIndex].LongRouteState;
    }
    else
    {
        retVal = CI_ERROR;
    }
	return retVal;
}


/*
* 功能描述： 设置指定ID长调进路状态
* 参数说明： const UINT16 routeId, 进路ID
*            const UINT8 routeState, 进路状态
* 返回值  ： 0: 设置数据失败
*            1: 设置数据成功
*/
UINT8 SetLongRouteState(const UINT16 routeId, const UINT8 routeState)
{
    UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 retVal = CI_SUCCESS;

    bufIndex = GetLongRouteConfigBufIndex(routeId);  /*获取道岔数组下标*/

    if (bufIndex >= ROUTE_LONG_SUM_MAX)
    {
        retVal = CI_ERROR;
    }

	if(CI_SUCCESS == retVal)
	{
		if (ROUTE_LONG_STATE_IDLE ==routeState)
		{  /*长调空闲*/

			LongRouteDataStru[bufIndex].LongXuanPaiStartCycNum = 0u;  /*清除进路选排起始周期*/
		}
		else if (ROUTE_LONG_STATE_XUANPAI ==routeState)
		{ /*长调选排*/

			LongRouteDataStru[bufIndex].LongXuanPaiStartCycNum = Get2oo2CurCycleNum();  /*设置进路选排起始周期*/
		}
		else if (ROUTE_LONG_STATE_LOCK ==routeState)
		{ /*长调锁闭*/

		}
		else
		{
			retVal = CI_ERROR;
		}
	}
	
	if(CI_SUCCESS == retVal)
	{
		LongRouteDataStru[bufIndex].LongRouteState = routeState; /*进路状态*/
	}

    return retVal;
}


/*
* 功能描述： 获取指定ID进路选排起始周期号
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： 0: 获取数据失败
*           >0: 选排起始周期号
*/
UINT32 GetLongRouteXuanPaiStartCycNum(const UINT16 routeId)
{
    UINT16 bufIndex = 0u;  /*数组下标*/
	UINT32 retVal = CI_ERROR;

    bufIndex = GetLongRouteConfigBufIndex(routeId);  /*获取道岔数组下标*/

    if (bufIndex < ROUTE_LONG_SUM_MAX)
    {
        retVal = LongRouteDataStru[bufIndex].LongXuanPaiStartCycNum;
    }
    else
    {
        retVal = CI_ERROR;
    }
	return retVal;
}

