131 lines
3.6 KiB
C
131 lines
3.6 KiB
C
|
|
/**
|
|||
|
|
* @file CanFdController.h
|
|||
|
|
* @brief CANFD控制器接口定义
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef USB2CAN_CAN_FD_CONTROLLER_H
|
|||
|
|
#define USB2CAN_CAN_FD_CONTROLLER_H
|
|||
|
|
|
|||
|
|
#include "CanMessage.h"
|
|||
|
|
#include "../usb/UsbDevice.h"
|
|||
|
|
|
|||
|
|
#include <vector>
|
|||
|
|
|
|||
|
|
namespace usb2can {
|
|||
|
|
namespace can {
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief CANFD控制器接口类
|
|||
|
|
*/
|
|||
|
|
class CanFdController {
|
|||
|
|
public:
|
|||
|
|
virtual ~CanFdController() = default;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 初始化CANFD控制器
|
|||
|
|
* @param usbDevice USB设备
|
|||
|
|
* @param config CANFD配置
|
|||
|
|
* @return 初始化成功返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
virtual bool initialize(usb::UsbDevice* usbDevice, const CanFdConfig& config) = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 关闭CANFD控制器
|
|||
|
|
*/
|
|||
|
|
virtual void shutdown() = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 检查CANFD控制器是否已初始化
|
|||
|
|
* @return 已初始化返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
virtual bool isInitialized() const = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 发送CANFD消息
|
|||
|
|
* @param message CANFD消息
|
|||
|
|
* @param timeout 超时时间(毫秒)
|
|||
|
|
* @return 发送成功返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
virtual bool sendMessage(const CanFdMessage& message, int timeout = 1000) = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 接收CANFD消息
|
|||
|
|
* @param[out] message CANFD消息
|
|||
|
|
* @param timeout 超时时间(毫秒)
|
|||
|
|
* @return 接收成功返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
virtual bool receiveMessage(CanFdMessage& message, int timeout = 1000) = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 批量发送CANFD消息
|
|||
|
|
* @param messages CANFD消息列表
|
|||
|
|
* @param count 消息数量
|
|||
|
|
* @param timeout 超时时间(毫秒)
|
|||
|
|
* @return 实际发送的消息数量,失败返回-1
|
|||
|
|
*/
|
|||
|
|
virtual int sendMessages(const CanFdMessage* messages, int count, int timeout = 1000) = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 批量接收CANFD消息
|
|||
|
|
* @param[out] messages CANFD消息列表
|
|||
|
|
* @param count 最大接收消息数量
|
|||
|
|
* @param timeout 超时时间(毫秒)
|
|||
|
|
* @return 实际接收的消息数量,失败返回-1
|
|||
|
|
*/
|
|||
|
|
virtual int receiveMessages(CanFdMessage* messages, int count, int timeout = 1000) = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取接收缓冲区中的消息数量
|
|||
|
|
* @return 接收缓冲区中的消息数量,失败返回-1
|
|||
|
|
*/
|
|||
|
|
virtual int getReceiveQueueCount() = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 设置CANFD过滤器
|
|||
|
|
* @param filterId 过滤器ID
|
|||
|
|
* @param type 过滤器类型
|
|||
|
|
* @param id 过滤ID
|
|||
|
|
* @param mask 过滤掩码
|
|||
|
|
* @param enable 是否启用过滤器
|
|||
|
|
* @return 设置成功返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
virtual bool setFilter(uint8_t filterId, uint8_t type, uint32_t id, uint32_t mask, bool enable) = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 复位CANFD控制器
|
|||
|
|
* @return 复位成功返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
virtual bool reset() = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取CANFD控制器状态
|
|||
|
|
* @param[out] status CAN状态
|
|||
|
|
* @return 获取成功返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
virtual bool getStatus(CanStatus& status) = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取CANFD控制器配置
|
|||
|
|
* @param[out] config CANFD配置
|
|||
|
|
* @return 获取成功返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
virtual bool getConfig(CanFdConfig& config) = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 设置CANFD控制器配置
|
|||
|
|
* @param config CANFD配置
|
|||
|
|
* @return 设置成功返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
virtual bool setConfig(const CanFdConfig& config) = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 创建CANFD控制器实例
|
|||
|
|
* @return CANFD控制器实例
|
|||
|
|
*/
|
|||
|
|
static CanFdController* createCanFdController();
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
} // namespace can
|
|||
|
|
} // namespace usb2can
|
|||
|
|
|
|||
|
|
#endif // USB2CAN_CAN_FD_CONTROLLER_H
|