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

#include "AutoReturnDataManage.h"





AutoReturnDataStruct AutoReturnDataStru[AUTO_RETURN_SUM_MAX];   /*定义自动折返数据结构体*/


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

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

    if (bufIndex < AUTO_RETURN_SUM_MAX)
	{
	    autoReturnSetFlag = AutoReturnDataStru[bufIndex].AutoReturnSetFlag;
	}
	return autoReturnSetFlag;
}


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

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

    if (bufIndex < AUTO_RETURN_SUM_MAX)
    {            
        autoIncludeRouteSum = GetAutoReturnIncludeRouteSum(autoReturnId);
        pAutoIncludeRouteIdbuf = GetAutoReturnIncludeRouteBuf(autoReturnId);

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

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

            }
            else
            {
                AutoReturnDataStru[bufIndex].AutoReturnSetFlag = AUTO_RETURN_SET_YES;

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

            AutoReturnDataStru[bufIndex].AutoReturnSetFlag = AUTO_RETURN_SET_NO;

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




