/********************************************************
*                                                                                                            
* 文 件 名： IndicatorDataManage.c   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2012-11-26
* 作    者： 联锁组
* 功能描述： 指示器数据管理  
* 修改记录：   
*
********************************************************/ 

#include "IndicatorDataManage.h"



IndicatorDataStruct IndicatorDataStru[INDICATOR_SUM_MAX];   /*定义指示器数据结构体*/
OCStationIndicDataStru g_OCStationIndicDataStru[INDICATOR_SUM_MAX] = { 0u }; /*OC站（集中站和非集中站）指示器数据*/

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

	bufIndex = GetIndicatorConfigBufIndex(indicatorId);  /*获取指示器数组下标*/

	if (bufIndex < INDICATOR_SUM_MAX)
	{
		reVal = IndicatorDataStru[bufIndex].IndicatorState;
	}
	else
	{
		reVal = CI_ERROR;
	}

	return reVal;
}


/*
* 功能描述： 设置指定ID指示器状态
* 参数说明： const UINT16 indicatorId, 指示器ID  
*			 const UINT8 indicatorState, 指示器状态
* 返回值  ： 无
*			        
*/
void SetIndicatorState(const UINT16 indicatorId, const UINT8 indicatorState)
{
	UINT16 bufIndex = 0u;  /*数组下标*/

	bufIndex = GetIndicatorConfigBufIndex(indicatorId);  /*获取指示器数组下标*/

	if (bufIndex < INDICATOR_SUM_MAX)
	{
		IndicatorDataStru[bufIndex].IndicatorState = indicatorState;  /*指示器状态*/
	}

}
/*
* 功能描述： 根据OCID，指示灯ID获取指示灯状态
* 参数说明： UINT8 ocid  OCID
*            UINT8 indicId  指示灯ID
* 返回值  ： 0u: 获取数据失败
*			>0u: 指示灯ID
* cgh-合并ECI11.0:
*/
UINT8 GetOCStationIndicState(UINT8 ocid, UINT8 indicId)
{
	UINT16 indicNum = GetOCStationIndicCurSum();
	UINT16 i = 0u;
	UINT8  reVal = 0u;
	for (i = 0u; i < indicNum; i++)
	{
		if ((indicId == g_OCStationIndicDataStru[i].IndicatorId)
			&& (ocid == g_OCStationIndicDataStru[i].ocid))
		{
			reVal = g_OCStationIndicDataStru[i].IndicatorState;
			break;
		}

	}
	return reVal;
}
/*
* 功能描述： 根据OCID，指示灯ID设置指示灯状态
* 参数说明： UINT8 ocid  OCID
*            UINT8 indicId  指示灯ID
*             UINT8 state  状态
* 返回值  ： 0u: 获取数据失败
*			>0u: 指示灯ID
* cgh-合并ECI11.0:
*/
void SetOCStationIndicState(UINT8 ocid, UINT8 indicId, UINT8 state)
{
	UINT16 indicNum = GetOCStationIndicCurSum();
	UINT16 i = 0u;
	for (i = 0u; i < indicNum; i++)
	{
		if ((indicId == g_OCStationIndicDataStru[i].IndicatorId)
			&& (ocid == g_OCStationIndicDataStru[i].ocid))
		{
			g_OCStationIndicDataStru[i].IndicatorState = state;
			break;
		}

	}
}
/*
* 功能描述： 获取OC站设备指示灯灯结构体
* 参数说明： 无
*
* 返回值  ： OC站设备指示灯灯结构体
* cgh-合并ECI11.0:
*/
OCStationIndicDataStru* GetOCStationIndicDataStru(void)
{
	return g_OCStationIndicDataStru;
}




