/********************************************************
*                                                                                                            
* 文 件 名： NonAutoReturnConfigDataManage.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2012-03-21
* 作    者： 联锁组
* 功能描述： 自动折返配置数据管理头文件  
* 函数包括： 
* 使用注意：
* 修改记录：   
*
********************************************************/ 

#ifndef _NON_AUTORETURN_DATA_MANAGE_H_
#define _NON_AUTORETURN_DATA_MANAGE_H_


#include "NonAutoReturnDefine.h"
#include "CommonTypes.h"
#include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"

#ifdef __cplusplus
extern "C" {
#endif

/*无人折返继电器粘连状态结构体*/
typedef struct S_RtnRelayAdhesionStruct
{
	UINT16 AdhesionRealyId;  /*粘连继电器ID*/
	UINT8 AdhesionState;     /*继电器粘连状态*/
	UINT32 RelayUpCycNum;    /*继电器吸起周期*/
} RtnRelayAdhesionStruct;

/*无人自动自动折返数据结构体*/
typedef struct S_NonAutoReturnDataStruct
{
	UINT16 cmdSetTrainId;												/*命令列车ID (动态字段)*/
	UINT8 IndicatorDevID; /*指示灯设备ID*/
	UINT8 VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/
	UINT8 VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
	RtnRelayAdhesionStruct RtnRelayAdhesionState; /*无人折返继电器粘连状态*/
} NonAutoReturnDataStruct;

extern NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX];   /*无人自动折返动态结构体*/

/*
* 功能描述： 获取指定ID无人自动折返按钮命令列车ID
* 参数说明： const UINT16 autoReturnId, 自动折返ID
* 返回值  ： 0: 获取数据失败
*			>0: 无人自动折返按钮指示灯继电器ID
*/
UINT16 GetNonRtnCmdSetTrainId(const UINT16 nonReturnId);

/*
* 功能描述： 获取无人折返数据结构体指针
* 参数说明：
* 返回值  ：
NonAutoReturnDataStruct *
*/
NonAutoReturnDataStruct* GetNonReturnData(void);

/*
* 功能描述： 设置指定ID无人自动折返按钮命令列车ID
* 参数说明： const UINT16 autoReturnId, 自动折返ID
* 返回值  ：无
*
*/
void SetNonRtnCmdSetTrainId(const UINT16 nonReturnId, const UINT16 trainId);

/*
* 功能描述： 获取无人折返灯的闪灯状态
* 参数说明： UINT16 devId 无人折返灯设备ID
* 返回值  ：无人折返灯闪灯状态
*			0x55 闪灯状态有效
*			0xAA 闪灯状态无效
* by cgh 20240904
*/
UINT8 GetAutoRtnIndictFlashState(UINT16 devId);

/*
* 功能描述： 获取无人折返灯的稳灯状态
* 参数说明： UINT16 devId 无人折返灯设备ID
* 返回值  ：无人折返灯稳灯状态
*			0x55 稳灯状态有效
*			0xAA 稳灯状态无效
* by cgh 20240904
*/
UINT8 GetAutoRtnIndictSteadyState(UINT16 devId);

/*
* 功能描述： 设置无人折返灯的闪灯状态
* 参数说明： UINT16 devId 无人折返灯设备ID
*            UINT8 state无人折返灯闪灯状态
*            VOBCTOCIAUTORTN_INDICT_MASK_VALID 0x55	有效状态
*			 VOBCTOCIAUTORTN_INDICT_MASK_INVALID 0xAA	无效状态
* 返回值  ：void
* by cgh 20240904
*/
void SetAutoRtnIndictFlashState(UINT16 devId, UINT8 state);

/*
* 功能描述： 设置无人折返灯的稳灯状态
* 参数说明： UINT16 devId 无人折返灯设备ID
*            UINT8 state 无人折返灯稳灯状态
*            VOBCTOCIAUTORTN_INDICT_MASK_VALID 0x55	有效状态
*			 VOBCTOCIAUTORTN_INDICT_MASK_INVALID 0xAA	无效状态
* 返回值  ：void
* by cgh 20240904
*/
void SetAutoRtnIndictSteadyState(UINT16 devId, UINT8 state);

/*
* 功能描述： 获取无人折返按钮继电器
* 参数说明： UINT16 devId 无人折返设备ID
* 返回值  ：无人折返按钮继电器ID
* by cgh 20240904
*/
UINT16 GetNonRtnAdhesionRealyId(UINT16 devId);

/*
* 功能描述： 获取无人折返按钮继电器粘连状态
* 参数说明： UINT16 devId 无人折返设备ID
* 返回值  ： 0: 获取数据失败
*			>0:无人折返按钮继电器粘连状态
* by cgh 20240904
*/
UINT8 GetNonRtnAdhesionState(UINT16 devId);

/*
* 功能描述： 设置无人折返按钮继电器粘连状态
* 参数说明： UINT16 devId 无人折返灯设备ID
*            UINT8 state 无人折返按钮继电器粘连状态
* 返回值  ：void
* by cgh 20240904
*/
void SetNonRtnAdhesionState(UINT16 devId, UINT8 state);

/*
* 功能描述： 获取无人折返按钮继电器继电器吸起周期
* 参数说明： UINT16 devId 无人折返设备ID
* 返回值  ： 无人折返按钮继电器继电器吸起周期
* by cgh 20240904
*/
UINT32 GetNonRtnRelayUpCycNum(UINT16 devId);

/*
* 功能描述： 设置无人折返按钮继电器继电器吸起周期
* 参数说明： UINT16 devId 无人折返灯设备ID
*            UINT32 state 无人折返按钮继电器继电器吸起周期
* 返回值  ：void
* by cgh 20240904
*/
void SetNonRtnRelayUpCycNum(UINT16 devId, UINT32 state);

/*
* 功能描述： 检查无人折返按钮是否存在粘连
* 参数说明： UINT8 devId 电子地图中无人折返按钮ID
* 返回值  ： RTN_RELAY_ADHESION_NO 不存在
*	         RTN_RELAY_ADHESION_YES 存在
* by cgh 20241031
*/
UINT8 CheckNonReturnExistAdhesion(UINT8 devId);

#ifdef __cplusplus
}
#endif

#endif
