/********************************************************
*
* 文 件 名： ReverseCutDataManage.h
* 版权说明： 北京交控科技有限公司
* 创建时间： 2022-06-15
* 作    者： 联锁组
* 功能描述： 倒切装置动态数据管理头文件
* 修改记录：
*
********************************************************/

#ifndef _REVERSE_CUT_DATA_MANAGE_H_
#define _REVERSE_CUT_DATA_MANAGE_H_


#include "CommonTypes.h"
#include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"
#include "ReverseCutDefine.h"
#include "../CutoffPoint/CutoffPointConfigDataManage.h"

#ifdef __cplusplus
extern "C" {
#endif

	/*倒切配置数据结构体*/
	typedef struct S_ReverseCutDataStruct
	{
		UINT16 wReverseCutId;				/*倒切状态*/
		UINT16 wReverseState;				/*倒切状态*/
	}ReverseCutDataStru;

	/*******************************全局变量声明*******************************/
	extern ReverseCutDataStru gstReverseCutData[REVERSE_CUT_SUM_MAX];     /*定义倒切装置数据动态数据结构体*/
	extern UINT8 gTiocSystemMode;
	extern UINT8 gTiocSystemCutState;
	extern UINT8 gTiocCanntCutReason;

/*
* 功能描述： 获取TIOC主机可倒切状态
* 参数说明： void
* 返回值  ：REVERSE_CUT_STATE_NORMAL:    正常可倒切
*			REVERSE_CUT_STATE_EXCEPTION: 异常不可倒切
*			REVERSE_CUT_STATE_DEFAULT: 默认倒切状态(主控模式)
*/
UINT8 GetTiocSystemCutState(void);


/*
* 功能描述： 设置TIOC主机模式
* 参数说明： const UINT8 chSystemCutState 系统可倒切状态
* 返回值  ：无
*/
void SetTiocSystemCutState(const UINT8 chSystemCutState);

/*
* 功能描述： 获取TIOC主机不可倒切原因
* 参数说明： void
* 返回值  ：REVERSE_REASON_OC_COMM_ERR	: 对象控制器通信异常
*			REVERSE_REASON_IVOC_COMM_ERR: IVOC通信异常
*			REVERSE_REASON_AXLE_COMM_ERR: 计轴系统通信异常
*/
UINT8 GetTiocCanntCutReason(void);

/*
* 功能描述： 设置TIOC主机不可倒切原因
* 参数说明： const UINT8 chCanntCutReason 不可倒切原因
* 返回值  ：无
*/
void SetTiocCanntCutReason(const UINT8 chCanntCutReason);

/*
* 功能描述： 设置TIOC主机模式
* 参数说明： const UINT8 chSystemMode 系统模式
* 返回值  ：无
*/
void SetTiocSystemMode(const UINT8 chSystemMode);
/*
* 功能描述： 获取TIOC主机模式
* 参数说明： void
* 返回值  ：REVERSE_MODE_MAIN: 主控模式
*			REVERSE_MODE_SHADOW: 影子模式
*/
UINT8 GetTiocSystemMode(void);


/*
* 功能描述： 获取指定ID倒切装置状态
* 参数说明： const UINT16 wReverseCutId, 倒切ID
* 返回值  ： 0: 获取数据失败
*			REVERSE_DEVICE_CUT_STATE_UP: 倒切设备状态 吸起
*			REVERSE_DEVICE_CUT_STATE_DOWN：倒切设备状态 落下
*/
UINT8 GetReverseCutState(const UINT16 wReverseCutId);

/*
* 功能描述： 设置指定ID倒切装置状态
* 参数说明： const UINT16 wReverseCutId, 倒切ID
*			 const UINT8 chReverseCutState,倒切状态
* 返回值  ： 无
*/
void SetReverseCutState(const UINT16 wReverseCutId, const UINT8 chReverseCutState);

/*
* 功能描述： 倒切设备数据初始化
* 参数说明： 无
* 返回值  ： 0: 设置失败
*			 1: 设置成功
*/
UINT8 ReverseCutDataManageInit(void);

#ifdef __cplusplus
}
#endif
#endif
