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

#ifndef _PARSE_PACK_TMC_DATA_H_
#define _PARSE_PACK_TMC_DATA_H_



#include "CommonTypes.h"
#include "Convert.h"
#include "ParsePackDefine.h"
#include "ParsePackCommon.h"
#include "../2oo2/2oo2InterfaceDataManage.h"
#include "SectionDefine.h"
#include "LogicSectionDataManage.h"
#include "WholeLineScreenAPI.h"

#define TIOC_TMC_PRTCL_VER			 ((UINT8)0x01u)			 /*TIOC-TMC协议版本号*/
#define TIOC_TMC_INTERFACE_INFOTYPE  ((UINT16)0x0101u)		 /*TIOC-TMC接口信息类型*/

#define TIOC_TO_TMC_TSR_MSG  ((UINT16)0x0101u)		 /*TIOC发送TMC限速信息类型*/
#define TMC_TO_TIOC_TSR_MSG  ((UINT16)0x0102u)		 /*TMC发送TIOC限速信息类型*/

#define TIOC_TO_TMC_SNOW_MSG  ((UINT16)0x0105u)		 /*TIOC发送TMC全线雨雪模式信息类型*/
#define TMC_TO_TIOC_SNOW_MSG  ((UINT16)0x0106u)		 /*TMC发送TIOC全线雨雪模式信息类型*/

#define TIOC_TO_TMC_MIANSHAI_MSG  ((UINT16)0x0103u)		 /*TIOC发送TMC全线免筛信息类型*/
#define TMC_TO_TIOC_WLS_MSG  ((UINT16)0x0104u)		 /*TMC发送TIOC全线免筛信息类型*/

#define TIOC_TO_TMC_ITELINECUT_MSG  ((UINT16)0x0107U)		 /*TIOC发送TMC ITE全线切除信息类型*/
#define TMC_TO_TIOC_ITELINECUT_MSG  ((UINT16)0x0108U)		 /*TMC发送TIOC ITE全线切除信息类型*/

#define TIOC_TO_TMC_LINECT_MSG  ((UINT16)0x0109U)		 /*TIOC发送TMC全线通信车信息类型*/
#define TMC_TO_TIOC_LINECT_MSG  ((UINT16)0x010AU)		 /*TMC发送TIOC全线通信车信息类型*/

#ifdef __cplusplus
extern "C" {
#endif

/*临时限速输入缓冲结构体*/
typedef struct S_TsrInputInfoStruct
{
	UINT8 cTsrValidFlag;	/* 临时限速有效标志：0x55：信息有些；0xAA：信息无效 */
	UINT8 cAllLineTsrState;	/* 全线临时限速状态 */
	UINT8 cAllLineTsrSpeed;	/* 全线临时限速速度 */
	UINT8 cTsrSum;			/* 限速数量 */
	TsrDataStruct szTsrInfo[TSR_MAX_SUM]; /* 限速信息 */
} TsrInputInfoStruct;

/*TMC->TIOC缓冲数据*/
typedef struct S_TmcToTiocDataStruct
{
	TsrInputInfoStruct tsrInputInfoStru;/* 临时限速信息 */
	UINT8 cSnowValidFlag;				/* 全线雨雪模式命令有效标志 */
	UINT8 cSnowLevel;  /*全线湿轨等级*/
	UINT8 cAreaSnowPlatFormNum;  /*区间雨雪站台数量*/
	AreaSnowInfoStruct szAreaSnowInfo[LOCAL_AREA_SNOW_SUM_MAX];  /*区间雨雪数组*/
	UINT8 cIteLineCutState;				/* ITE全线切除状态 */
	UINT8 cAreaIteCutNum;  /*区间ITE切除数量*/
	UINT16 szAreaIteCutId[ALL_AREA_SNOW_SUM_MAX];  /*区间ITE切除ID数组*/
	UINT8 cLineCtNum;  /*全线通信车数量*/
	UINT16 szLineCtId[TRAIN_SUM_MAX];  /*全线通信车ID数组*/
} TmcToTiocDataStruct;

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


/*
* 功能描述： 组TMC数据
* 参数说明：UINT8 deviceId TMC编号
* 返回值  ： 0:组数据失败
*			 1:组数据成功
*/
extern UINT8 PackTiocToTmcData(UINT8 deviceId);

/*
* 功能描述：获取TMC输入数据
* 返回值：接收TMC数据
*/
extern TmcToTiocDataStruct* GetTmcToTiocData(void);

/*
* 功能描述：清除TMC输入数据
*/
extern void ClearTmcToTiocData(void);
#ifdef __cplusplus
}
#endif

#endif
