/******************************************************************************
** 文件名:  AxisAssertDefine.h
** 描 述:   计轴故障诊断模块，计轴故障诊断模块简称aam  为包络管理的附属模块
*******************************************************************************/
#ifndef AXIS_ASSERT_DEFINE_H_
#define AXIS_ASSERT_DEFINE_H_
#include "EnvelopeDefine.h"


#define AAM_STATUS_OCC 0x00u                                  /* 计轴占用状态（CT/UT占用） */
#define AAM_STATUS_ARB 0x55u                                  /* 计轴ARB状态 */
#define AAM_STATUS_FREE_OR_REDUN 0xaau                        /* 计轴空闲或者冗余状态 */

#define AAM_CT_PASS 0xffu                                     /* 计轴区段好车通过 */
#define AAM_UT_PASS 0x00u                                     /* 计轴区段坏车通过*/

#define AAM_ENVELOPE_ENTER_ERROR 0x00u                        /* 好车通过步骤错误*/
#define AAM_ENVELOPE_HEAD_ENTER 0x01u                         /* 好车通过第一步：车头进入*/
#define AAM_ENVELOPE_TAIL_ENTER 0x02u                         /* 好车通过第二步：车尾进入*/
#define AAM_ENVELOPE_TAIL_EXIT 0x03u                          /* 好车通过第三步：车尾出清*/
#define AAM_ENVELOPE_HEAD_EXIT 0x04u                          /* 车头出清 */

#define AAM_GOOD_NEAR  0x01u                                  /* 好车接近 */
#define AAM_GOOD_FAR_AWAY 0x02u                               /* 好车远离 */
#define AAM_BAD_NEAR 0x03u                                    /* 坏车接近 */
#define AAM_NO_TRAIN_NEAR 0x04u                               /* 无车接近 */
#define AAM_GOOD_OCC 0x05u                                    /* 好车占用 */
#define AAM_SLEEP_OCC 0x06u                                    /* 休眠车占用 */


#define AAM_API_AC_ARB 0x01u                                  /* 计轴ARB*/
#define AAM_API_AC_REDUNARB 0x02u                             /* 计轴ARB冗余 */
#define AAM_API_AC_UT 0x03u                                   /* 计轴UT */
#define AAM_API_AC_REDUNUT 0x04u                              /* 计轴UT冗余 */

/*计轴区段冗余结束后可否判为ARB标志*/
#define REDUN_OVER_ARB_YES		            ((UINT8)0x55)    /*可ARB*/
#define REDUN_OVER_ARB_NO               ((UINT8)0xaa)    /*需置为UT占用*/


#define AAM_END_LINE_INIT 0x55u       /* 尽头线ARB初始化 */
#define AAM_END_LINE_UNINIT 0xaau       /* 尽头线ARB未初始化 */

#define AAM_COM_STATUS_OK (0x55u)     /* 通信状态正确 */
#define AAM_COM_STATUS_ERROR (0xaau)  /* 通信状态错误 */ 

/*计轴系统通信中断ARB有效标志*/
#define AAM_COMM_BAD_ARB_YES (0x55U)     /*计轴系统通信中断ARB有效*/
#define AAM_COMM_BAD_ARB_NO (0xAAU)      /*计轴系统通信中断ARB无效*/ 

/** 定义计轴诊断信息结构体 */
typedef struct  
{
	UINT8 acAssertStatus;                                    /* 计轴ARB状态 */
	UINT8 passTrainFlag;                                     /* 好车通过标志位 */
	UINT16 passTrainID;                                      /* 好车通过列车ID */
	UINT8 redunTime;                                         /* 占用冗余时间*/
	UINT8 headEnterTrainCnt;                                 /* 进入的列车头数量 */
	UINT16 headEnterTrainId[SECTION_REL_ENVELOPE_SUM_MAX];   /* 列车头进入的计轴 */
	UINT8 tailEnterTrainCnt;                                 /* 进入的列车尾数量 */
	UINT16 tailEnterTrainId[SECTION_REL_ENVELOPE_SUM_MAX];   /* 列车尾进入的计轴 */
	UINT8 redunOverCanArb;  /*冗余结束后能否判为ARB标志 空闲时设置为0x55*/
	UINT8 AxisCommBadArbFlag;  /*计轴通信中断可判ARB有效标志：0x55-有效,0xAA-无效*/
}AxisAsserStruct;


#endif