/******************************************************************************
** 文件名:  WholeLineScreenAPI.h
** 描 述:   全线免筛模块对外接口
*******************************************************************************/
#ifndef WHOLE_LINE_SCREEN_API_H_
#define WHOLE_LINE_SCREEN_API_H_
#include "WholeLineScreenDefine.h"


/**
 * @brief 对外接口：打印全线免筛信息 
 * @param[in] 无
 * @param[out] 无
 * @return 无
 * @note 无
 */
void wls_PrintfWLScreenInfo(void);


/**
 * @brief 对外接口：全线免筛模块初始化
 * @param[in] 无
 * @param[out] 无
 * @return 无
 * @note CI_ERROR,初始化失败；CI_SUCCESS,初始化成功
 */
UINT8 wls_Init(void);

/**
 * @brief 对外接口：全线免筛处理
 * @param[in] 无
 * @param[out] 无
 * @return 无
 * @note 无
 */
void wls_MainProcess(void);

/**
 * @brief 对外接口：跟随全线免筛模块数据
 * @param[out] UINT8 *pDataBuff 跟随数据的存储地址指针
 * @param[in] UINT32 curIndex 跟随数据的索引地址
 * @return 跟随数据的长度
 * @note 无
 */
UINT32 wls_GetTransferData(OUT UINT8 *pDataBuff,UINT32 curIndex);

/**
 * @brief 对外接口：拷贝全线免筛模块数据
 * @param[in] const UINT8 *pDatabuff 跟随数据的存储地址指针
 * @param[in] UINT32 curIndex 跟随数据的索引地址
 * @param[in] UINT32 len 跟随数据的长度
 * @return 截取数据索引
 * @note 
 */
UINT32 wls_SetTransferData(IN const UINT8 *pDatabuff,UINT32 curIndex,UINT32 len);


/**
 * @brief 对外接口：准备对外发送的信息
 * @param[in] 无
 * @param[out] WLScreenReportStruct *pOutInfo
 * @return CI_ERROR 处理错误；CI_SUCCESS 处理成功
 * @note 无
 */
UINT8 wls_PrepareWLSInfoToTMC(OUT WLScreenReportStruct *pOutInfo);


/**
 * @brief 对外接口：刷新输入信息
 * @param[in] const WLScreenReciveStruct *pInInfo
 * @param[out] 无
 * @return 无
 * @note 无
 */
void wls_RefreshWLSInfoFromTMC(IN const WLScreenReciveStruct *pInInfo);

/**
 * @brief 对外接口：清除从TMC接收到信息
 * @param[in] 无
 * @param[out] 无
 * @return 无
 * @note 无
 */
void wls_ClearWLSInfoFromTMC(void);


/**
 * @brief 对外接口:设置列车的控制状态
 * @param[in] UINT16 trainID 列车ID
 * @param[in] UINT8 ControlStatus 列车控制状态
 * @param[in] UINT8 headFlag 前方隐藏车标志
 * @param[in] UINT8 tailFlag 后方隐藏车标志
 * @param[out] 无
 * @return 无
 * @note 当列车车头车尾不属于本OC时调用
 */
void wls_SetTrainControlStatus(UINT16 trainID,UINT8 ControlStatus,UINT8 headFlag, UINT8 tailFlag);

/**
 * @brief 对外接口：获取列车的控制状态
 * @param[in] UINT16 trainID 列车ID
 * @param[out] 无
 * @return OUT_CONTROL_STATUS 不处在控制状态的车；IN_CONTROL_STATUS 处在控制状态的车；OFFLINE_CONFIRM_STATUS 处在下线待确认的车
 * @note 无
 */
UINT8 wls_GetTrainControlStatus(UINT16 trainID);



/**
 * @brief 对外接口：获取免筛允许标志
 * @param[in] 
 * @param[out]
 * @return WHOLE_LINE_SCREEN_VAILD 全线免筛允许；WHOLE_LINE_SCREEN_UNVAILD 全线免筛不允许
 * @note 
 */
UINT8 wls_GetWLScreenPermitFlag(void);




#endif

