#ifndef CAN_INF_H_
#define CAN_INF_H_
#include "platmacro.h"

#define CAN_INF_MAX_FILETER_NUM  128

typedef enum{
    CAN_OBJ_ID_1,
    CAN_OBJ_ID_2,

    CAN_OBJ_ID_MAX,
}CAN_OBJ_ID_ENUM;

typedef struct
{
    uint32_t canObjId;
    uint32_t canBitRate;
}CAN_INF_CFG_STRU;

//
/**
 * @brief       can初始化
 * @param[in]   CAN_INF_CFG_STRU *pCanInitCfg can初始化配置
 * @return      int32_t
 * @retval      0:正常  !0:错误
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2022-10-20           JHC        创建初始版本          \n
*/
int32_t Can_Init(CAN_INF_CFG_STRU *pCanInitCfg);

/**
 * @brief       设置can滤波
 * @param[in]   CAN_INF_FILTER_STRU *pCanFilter 过滤配置
 * @param[in]   uint32_t filterNum  滤波配置数量
 * @return      int32_t
 * @retval      0:正常  !0:错误
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2022-10-20           JHC        创建初始版本          \n
*/
//int32_t Can_FilterConfig(uint32_t canObjId, CanFilter *pCanFilter, uint32_t filterNum);
int32_t Can_FilterConfig(uint32_t canObjId, unsigned long accCode, unsigned long accMask, unsigned char filter);
/**
 * @brief       发送CAN数据
 * @param[in]   uint32_t canObjId
 * @param[in]   CanMsg *txMsg can数据
 * @return      int32_t
 * @retval      0:正常  !0:错误
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2022-10-20           JHC        创建初始版本          \n
*/
int32_t Can_SendMsg(uint32_t canObjId, CanMsg *txMsg);

/**
 * @brief       接收CAN数据
 * @param[in]   uint32_t canObjId
 * @param[in]   CanMsg *rxMsg can数据
 * @return      int32_t
 * @retval      0:正常  !0:错误
 * @par         修改日志:
 * Date                Author     Description           \n
 * 2022-10-20           JHC        创建初始版本          \n
*/
int32_t Can_RecvMsg(uint32_t canObjId, CanMsg *rxMsg);

#endif