/********************************************************
*                                                                                                            
* 文 件 名： AllAutoReturnDataManage.c   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2014-10-11
* 作    者： 联锁组
* 功能描述： 全自动折返数据管理  
* 修改记录：   
*
********************************************************/ 

#include "../AllAutoReturn/AllAutoReturnDataManage.h"




AllAutoReturnDataStruct AllAutoReturnDataStru[ALL_AUTO_RETURN_SUM_MAX];   /*定义自动折返数据结构体*/


/*
* 功能描述： 获取指定ID自动折返办理标志
* 参数说明： const UINT8 allAutoReturnId, 自动折返ID    
* 返回值  ： 0: 获取数据失败
*			>0: 办理标志
*/
UINT8 GetAllAutoReturnSetFlag(const UINT16 allAutoReturnId)
{
    UINT16 bufIndex = 0u;  /*数组下标*/
	UINT8 allAutoReturnSetFlag = CI_ERROR;

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

    if (bufIndex < ALL_AUTO_RETURN_SUM_MAX)
	{
	    allAutoReturnSetFlag = AllAutoReturnDataStru[bufIndex].AllAutoReturnSetFlag;
	}

	return allAutoReturnSetFlag;
}


/*
* 功能描述： 设置指定ID全自动折返办理标志
* 参数说明： const UINT8 allAutoReturnId, 全自动折返ID
*			 const UINT8 setState, 办理标志
* 返回值  ： 无
*			   
*/
void SetAllAutoReturnSetFlag(const UINT16 allAutoReturnId, const UINT8 setState)
{
    UINT8 ii = 0u;
    UINT8 jj = 0u;
    UINT8 autoIncludeRouteSum = 0u;
    UINT16 *pAutoIncludeRouteIdbuf = NULL;
    UINT8 autoSetFlag = CI_ERROR;
    UINT16 bufIndex = 0u;  /*数组下标*/

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

    if (bufIndex < ALL_AUTO_RETURN_SUM_MAX)
    {            
        autoIncludeRouteSum = GetAllAutoReturnIncludeRouteSum(allAutoReturnId);
        pAutoIncludeRouteIdbuf = GetAllAutoReturnIncludeRouteBuf(allAutoReturnId);

	    if (ALL_AUTO_RETURN_SET_YES == setState)
		{ 
            autoSetFlag = CI_ERROR;

            /*设置自动属性*/
            for (ii = 0u; ii < autoIncludeRouteSum; ii++)
            {
                autoSetFlag = SetRouteAllAutoReturnId(pAutoIncludeRouteIdbuf[ii],allAutoReturnId);
                if (autoSetFlag == CI_ERROR)
                {
                    /*设置失败*/
                    break;
                }
            }
        
            if (autoSetFlag == CI_ERROR)
            {            
                for (jj = 0u; jj < ii; jj++)
                {
                    /*清除已设置Id*/
					(void)SetRouteAllAutoReturnId(pAutoIncludeRouteIdbuf[jj],0u);
                }

            }
            else
            {
                AllAutoReturnDataStru[bufIndex].AllAutoReturnSetFlag = ALL_AUTO_RETURN_SET_YES;

            }		    
		}
		else if (ALL_AUTO_RETURN_SET_NO == setState)
		{
            for (ii = 0; ii < autoIncludeRouteSum; ii++)
            {
                /*清除已设置Id*/
				(void)SetRouteAllAutoReturnId(pAutoIncludeRouteIdbuf[ii],0u);
            }

            AllAutoReturnDataStru[bufIndex].AllAutoReturnSetFlag = ALL_AUTO_RETURN_SET_NO;

		}
        else
		{
		    /*不做处理*/
		}
	}
}



