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

#include "AutoRouteDataManage.h"


AutoRouteDataStruct AutoRouteDataStru[AUTO_ROUTE_SUM_MAX] = {0u};   /*定义自动进路数据结构体*/


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

	bufIndex = GetAutoRouteBufIndex(autoRouteId);  /*获取自动进路数组下标*/

    if (bufIndex < AUTO_ROUTE_SUM_MAX)
    {
        autoRouteSetFlag = AutoRouteDataStru[bufIndex].AutoRouteSetFlag;
    }
	return autoRouteSetFlag;
}


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

	bufIndex = GetAutoRouteBufIndex(autoRouteId);  /*获取自动进路数组下标*/

    if (bufIndex < AUTO_ROUTE_SUM_MAX)
    {
        autoIncludeRouteSum = GetAutoRouteIncludeRouteSum(autoRouteId);
        pAutoIncludeRouteIdbuf = GetAutoRouteIncludeRouteBuf(autoRouteId);

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

            /*设置自动属性*/
            for (ii = 0u; ii < autoIncludeRouteSum; ii++)
            {
                autoSetFlag = SetRouteAutoRouteId(pAutoIncludeRouteIdbuf[ii],autoRouteId);
                if (autoSetFlag == CI_ERROR)
                {
                    /*设置失败*/
                    break;
                }
            }
        
            if (autoSetFlag == CI_ERROR)
            {
                for (jj = 0u; jj < ii; jj++)
                {
                    /*清除已设置Id*/
					(void)SetRouteAutoRouteId(pAutoIncludeRouteIdbuf[jj],0u);
                }
            }
            else
            {
                AutoRouteDataStru[bufIndex].AutoRouteSetFlag = AUTO_ROUTE_SET_YES;

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

            AutoRouteDataStru[bufIndex].AutoRouteSetFlag = AUTO_ROUTE_SET_NO;

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

/*
* 功能描述：获取自动进路动态数据结构体
* 参数说明：无
* 返 回 值：自动进路动态数据结构体
* Created By LQ 2025.05.26
*/
AutoRouteDataStruct* GetAutoRouteDataStr(void)
{
    return AutoRouteDataStru;
}