/********************************************************
*                                                                                                            
* 文 件 名： ParsePackPSCData.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2014-12-25
* 作    者： 联锁组
* 功能描述： PSD数据解析头文件  
* 函数包括：
* 使用注意：
* 修改记录：   
*
********************************************************/ 

#ifndef _PARSE_PACK_PSC_DATA_H_
#define _PARSE_PACK_PSC_DATA_H_


#include "CommonTypes.h"
#include "Convert.h"
#include "ParsePackDefine.h"
#include "ParsePackCommon.h"
#include "CiInterfaceDefine.h"
#include "../Mask/MaskDefine.h"
#include "../Mask/MaskConfigDataManage.h"
#include "../2oo2/2oo2InterfaceDataManage.h"
#include "../DataManage/DeviceDataManage.h"
#include "../PSD/PSDConfigDataManage.h"
#include "../PSC/PSCConfigDataManage.h"
#ifdef __cplusplus
extern "C" {
#endif


#define CI_PSC_INTERFACE_INFOTYPE    ((UINT16)0x0401) /*CI_PSC接口信息类型*/
#define CI_PSC_INFO_TYPE_PSD_STATE   ((UINT16)0x0402) /*CI=>PSC状态信息类型*/
#define PSC_CI_INFO_TYPE_PSD_STATE   ((UINT16)0x0403) /*PSC=>CI状态信息类型*/

 
/*报警信息显示状态*/
#define ALARM_STATE_NO  		  		            ((UINT8)0x55)  /*正常*/
#define ALARM_STATE_YES  		  		            ((UINT8)0xAA)  /*故障*/
#define ALARM_STATE_DEFAULT  		  		        ((UINT8)0xFF)  /*默认值*/
 
/*双系报警信息显示状态*/
#define ALARM_MAIN_WORK_STATE  		  		            ((UINT8)0x55)  /*主状态*/
#define ALARM_BACKUP_WORK_STATE  		  	                ((UINT8)0xAA)  /*备状态*/
#define ALARM_DEFAULT_WORK_STATE  		  		        ((UINT8)0xFF)  /*故障状态*/

/*与联锁通信的Psd信息*/
typedef struct S_PsdToPscDataStruct
{
    UINT16 psdId;                                /*Psd ID*/
	UINT8  psdState;						     /*Psd状态，开门：0x55，关门：0xaa*/
	UINT8  psdMLockState;                        /*互锁解除信息，未互锁解除 0x55; 互锁解除 0xaa*/
	UINT32 psdFaultQStataOne;                    /*故障隔离信息前四个字节*/
	UINT32 psdFaultQStataTwo;                    /*故障隔离信息后四个字节*/
	UINT32 psdDoorsStateOne;                     /*每扇屏蔽门的开关状态前四个字节*/
	UINT32 psdDoorsStateTwo;                     /*每扇屏蔽门的开关状态后四个字节*/
	UINT32 psdDoorIStateOne;                     /*每扇屏蔽门的被隔离信息前四个字节*/
	UINT32 psdDoorIStateTwo;                     /*每扇屏蔽门的被隔离信息后四个字节*/
	UINT8  psdAtsMlockState;                     /*ATS确认互锁解除状态：未互锁解除 0x55; 互锁解除 0xaa*/
} PsdToPscDataStruct;


typedef struct S_PSCToCiDataStruct
{
	UINT8 pscId;    
	UINT16 appInfoType;										/*应用信息类型*//*车站编号:配置字段*/
	UINT8 psdSum; 
	UINT8 devType_PSC_A_WORK_STATE;               /*PSC A系工作状态表示灯*/
	UINT8 devType_PSC_B_WORK_STATE;               /*PSC B系工作状态表示灯*/
	UINT8 devType_PSC_SINGLE_COMM_STATE;          /*PSC 单个通信板故障状态表示灯*/
	UINT8 devType_PSC_FSIO_FAULT_STATE;           /*PSC FSIO故障状态表示灯*/
	UINT8 devType_PSC_DRIVE_POWER_STATE;          /*PSC 驱动电源状态表示灯*/
	UINT8 devType_PSC_CONTROL_POWER_STATE;        /*PSC 控制电源状态表示灯*/
	UINT8 devType_PSC_Q_IM_1_STATE;               /*PSC 接口模块1的状态表示灯*/
	UINT8 devType_PSC_Q_IM_2_STATE;               /*PSC 接口模块2的状态表示灯*/
	UINT8 devType_PSC_OPEN_FAULT_STATE_UP;        /*PSC 上行开门故障状态表示灯*/
	UINT8 devType_PSC_CLOSE_FAULT_STATE_UP;       /*PSC 上行关门故障状态表示灯*/
	UINT8 devType_PSC_OPEN_FAULT_STATE_DOWN;      /*PSC 下行开门故障状态表示灯*/
	UINT8 devType_PSC_CLOSE_FAULT_STATE_DOWN;     /*PSC 下行关门故障状态表示灯*/
	/*屏蔽门数量: 配置字段*/
	PsdToPscDataStruct psdDataStr[PSC_INCLUDE_PSD_MAX_SUM];        /*屏蔽门信息结构体数组*/
} PSCToCiDataStruct;

/*******************************全局变量声明*******************************/
extern PSCToCiDataStruct PscToCiDataStru[PSC_TO_CI_SUM_MAX];
extern UINT8 PscIndex[PSD_SUM_MAX][2];

/*
* 功能描述： 站台数据结构初始化
* 参数说明： void    
* 返回值  ： 0:解析失败
*			 1:解析成功      
*/
UINT8 InitialPscToCiData(void);


/*
* 功能描述： 解析处理PSD单帧数据
* 参数说明： const UINT8* dataBuf, 数据缓冲区
*            const UINT16 dataLength, 数据长度
*            const UINT8 systemId, 源设备ID
* 返回值  ： 0: 数据解析失败
*			 1: 数据解析成功      
*/
UINT8 ParsePscToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 systemId);


/*
* 功能描述： 组PSD数据
* 参数说明： QueueStruct* CiToPscDataQueue, 组包发送队列地址     
* 返回值  ： 0:组数据失败
*			 1:组数据成功      
*/
UINT8 PackCiToPscData(UINT8 deviceId);


/*
* 功能描述： 获取Platform-CI的结构体数组
* 参数说明： void    
* 返回值  ： Platform-CI结构体数组指针      
*/
PSCToCiDataStruct* GetPscToCiDataStru(void);

/*
* 功能描述：为指定PSD->CI的结构设置缺省值(安全值) 
* 参数说明： platformId:PSD系统的ID
* 返回值  ： 0:失败
*			 1:成功     
*/
UINT8 SetPscToCiDefaultDataStru(UINT8 pscId);
#ifdef __cplusplus
}
#endif

#endif
