#ifndef __CANRBUS_ROUTE_H__
#define __CANRBUS_ROUTE_H__

#include "platmacro.h"

/*!
 * @brief       下行通道接收数据
 *              CMD:(1)目标本层级:本设备直接处理,其它不处理  (2)目标下层:不转发  (3)目标上层:不处理
 *              RESP:(1)目标本层级:不处理  (2)目标下层:不处理  (3)目标上层级:转发
 *
 *
 * @param[in]   canbusId
 * @param[in]   inPortType
 * @param[in]   pComIfData
 * @return
 * @retval      None
 *
 * @par         modify    log
 * Date        Author     Description             \n
 * 2022-7-26     dfs      Create             \n
 *
 */
int32_t CANRBUS_Route_DownPortRxFlowMsg(uint32_t inPortType, uint32_t canbusId, ComIfData *pComIfData);

/*!
 *
 * @brief       上行通道接收数据
 *              CMD:(1)目标本层级:本设备直接处理,其它不处理  (2)目标下层:转发  (3)目标上层:不处理
 *              RESP:(1)目标本层级:不处理  (2)目标下层:不处理 (3)目标上层级:不处理
 *
 *              部署:针对BAU/BCU: 需要使能 UpperPort   DownPort
 *                       BMU:     只需要使能 UpperPort
 *
 * @param[in]   canbusId
 * @param[in]   inPortType
 * @param[in]   pComIfData
 * @return
 * @retval      None
 *
 * @par         modify    log
 * Date        Author     Description             \n
 * 2022-7-26     dfs      Create             \n
 *
 */
int32_t CANRBUS_Route_UpperPortRxFlowMsg(uint32_t inPortType, uint32_t canbusId, ComIfData *pComIfData);



/*!
 * @brief      将通过以太网接收的消息 转换为CANRBUS消息进行处理
 *             主要将消息头增加CAN ID，按照CANRBUS的CAN格式处理
 *                     上行端口
 *
 * @param[in]   buf
 * @param[in]   handId
 * @param[in]   len
 * @param[in]   param
 * @return
 * @retval      0:正常处理  非0:不处理
 *
 * @par         modify    log
 * Date        Author     Description             \n
 * 2022-7-16     dfs      Create             \n
 *
 */
int32_t CANRBUS_Route_EtherCMD(uint32_t handleId, uint8_t *buf, uint16_t len, void *param);

/*!
 * @brief       单一的非隧道的接收处理 CAN方式
 *                   下行端口
 *
 * @param[in]   handle
 * @param[in]   pComIfData
 * @return
 * @retval      None
 *
 * @par         modify    log
 * Date        Author     Description             \n
 * 2022-7-23     dfs      Create             \n
 *
 */
int32_t CANRBUS_Route_Nontunnel_DownPort_RecvCallback(ComIf_Handle_Type handle, ComIfData *pComIfData);

/*!
 * @brief       单一的非隧道的接收处理 CAN方式
 *                   上行端口
 *
 * @param[in]   handle
 * @param[in]   pComIfData
 * @return
 * @retval      None
 *
 * @par         modify    log
 * Date        Author     Description             \n
 * 2022-7-23     dfs      Create             \n
 *
 */
int32_t CANRBUS_Route_Nontunnel_UpperPort_RecvCallback(ComIf_Handle_Type handle, ComIfData *pComIfData);


/*!
 * @brief      将通过以太网接收的消息 转换为CANRBUS消息进行处理
 *             主要将消息头增加CAN ID，按照CANRBUS的CAN格式处理
 *                     上行端口
 *
 * @param[in]   buf
 * @param[in]   handId
 * @param[in]   len
 * @param[in]   param
 * @return
 * @retval      0:正常处理  非0:不处理
 *
 * @par         modify    log
 * Date        Author     Description             \n
 * 2022-7-16     dfs      Create             \n
 *
 */
int32_t CANRBUS_Route_EtherCMD(uint32_t handleId, uint8_t *buf, uint16_t len, void *param);


/*!
 * @brief        获取系统接收最近一次获取到Debug消息/升级消息的时间
 *
 * @param[in]   utc
 * @param[in]   param
 * @return
 * @retval      None
 *
 * @par         modify    log
 * Date        Author     Description             \n
 * 2022-8-11     dfs      Create             \n
 *
 */
void CANRBUS_Route_GetRecvdMsgUTC(uint32_t *utc, void *param);


#endif /*__CANRBUS_ROUTE_H__*/
