/********************************************************
*                                                                                                            
* 文 件 名： SPKSDataConfig.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2014-12-05
* 作    者： 联锁组
* 功能描述： SPKS开关相关配置  
* 函数包括： 
* 使用注意：
* 修改记录：   
*
********************************************************/ 

#ifndef _SPKS_DATA_MANAGE_CONFIG_H_
#define _SPKS_DATA_MANAGE_CONFIG_H_
#include "../SPKS/SpksDefine.h"
#include "CommonTypes.h"

typedef struct  
{
	UINT16 spksId;					/* spks编号 */
	UINT8  status;					/* spks状态 */
	UINT8  cutStatus;			    /* spks旁路状态 */
	UINT32 flockStartNum;           /*封锁起始周期*/
	UINT8 TotalSpksDriveOutDis;		/*总SKPKS驱动分SPKS室外指示灯标志*/
	UINT32 dwSpksBtnPressCycNum;  /*SPKS按钮按下起始周期号*/
} SpksDataStruct;

extern SpksDataStruct spksDataBuff[SPKS_SUM_MAX];		/* 配置数据 */

#ifdef __cplusplus
extern "C" {
#endif

	/*
	* 功能描述： 获取指定SPKS数据
	* 参数说明：     
	* 返回值  ： 
	SpksDataStruct*    
	*/
	SpksDataStruct * GetSpksData(void);


	/*
	* 功能描述： 获取指定ID spks按钮状态
	* 参数说明： const UINT16 spksId, spks ID    
	* 返回值  ： 0: 获取数据失败
	*			>0: 紧急停车按钮状态      
	*/
	UINT8 GetSpksState(const UINT16 spksId);

	/*
	* 功能描述： 设置指定ID Spks按钮状态
	* 参数说明： const UINT16 spksId, spks ID
	*			 const UINT8 spksState, spks状态   
	* 返回值  ： 0: 设置失败
	*			 1: 设置成功  
	*/
	UINT8 SetSpksState(const UINT16 spksId, const UINT8 spksState);

	/*
	* 功能描述： 获取指定ID spks旁路状态
	* 参数说明： const UINT16 spksId, spks ID    
	* 返回值  ： 0: 获取数据失败
	*			>0: 紧急停车按钮状态      
	*/
	UINT8 GetSpksCutState(const UINT16 spksId);

	/*
	* 功能描述： 设置指定ID Spks旁路状态
	* 参数说明： const UINT16 spksId, 按钮ID
	*			 const UINT8 spksCutState, 旁路状态   
	* 返回值  ： 无
	*			    
	*/
	void SetSpksCutState(const UINT16 spksId, const UINT8 spksCutState);


	/*
	* 功能描述： SPKS状态初始化
	* 参数说明： 无
	* 返回值  ： 0: 设置失败
	*			 1: 设置成功  
	*/
	UINT8 SpksDataManageInit(void);

	/*
	* 功能描述： 设置指定ID Spks 封锁物理区段起始周期
	* 参数说明： const UINT16 spksId, 按钮ID
	*			 const UINT32 spksCutState, 封锁物理区段起始周期
	*/
	void SetSpksflockStartNum(const UINT16 spksId, const UINT32 flockStartNum);

	/*
    * 功能描述： 获取指定ID Spks 封锁物理区段起始周期
	* 参数说明： const UINT16 spksId, 按钮ID
	*
	* 返回值：封锁起始周期
	*/
	UINT32 GetSpksflockStartNum(const UINT16 spksId);

	/*
	* 功能描述： 设置总SPKS驱动分SPKS的室外灯标志
	* 参数说明： const UINT16 spksId, 按钮ID
	*            const UINT8 driveFlag 设置标志
	* 返回值：无
	*/
	void SetDriveOutDisFlag(const UINT16 spksId, const UINT8 driveFlag);
	/*
	* 功能描述： 获取总SPKS驱动分SPKS的室外灯标志
	* 参数说明： const UINT16 spksId, 按钮ID
	*
	* 返回值：设置标志
	*/
	UINT8 GetDriveOutDisFlag(const UINT16 spksId);

/*
* 功能描述：获取SPKS按钮按下起始周期
* 参数说明：const UINT16 spksId SPKS编号
* 返 回 值：SPKS按钮按下起始周期
* Created By LQ 2025.06.26
*/
UINT32 GetSpksPressCycNum(const UINT16 spksId);

/*
* 功能描述：设置SPKS按钮按下起始周期
* 参数说明：const UINT16 spksId SPKS编号
*			const UINT32 dwCycNum 周期号
* 返 回 值：无
* Created By LQ 2025.06.26
*/
void SetSpksPressCycNum(const UINT16 spksId, const UINT32 dwCycNum);

#ifdef __cplusplus
};
#endif

#endif