Files
hcanview/include/can/CanFdController.h

131 lines
3.6 KiB
C
Raw Normal View History

/**
* @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 truefalse
*/
virtual bool initialize(usb::UsbDevice* usbDevice, const CanFdConfig& config) = 0;
/**
* @brief CANFD控制器
*/
virtual void shutdown() = 0;
/**
* @brief CANFD控制器是否已初始化
* @return truefalse
*/
virtual bool isInitialized() const = 0;
/**
* @brief CANFD消息
* @param message CANFD消息
* @param timeout
* @return truefalse
*/
virtual bool sendMessage(const CanFdMessage& message, int timeout = 1000) = 0;
/**
* @brief CANFD消息
* @param[out] message CANFD消息
* @param timeout
* @return truefalse
*/
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 truefalse
*/
virtual bool setFilter(uint8_t filterId, uint8_t type, uint32_t id, uint32_t mask, bool enable) = 0;
/**
* @brief CANFD控制器
* @return truefalse
*/
virtual bool reset() = 0;
/**
* @brief CANFD控制器状态
* @param[out] status CAN状态
* @return truefalse
*/
virtual bool getStatus(CanStatus& status) = 0;
/**
* @brief CANFD控制器配置
* @param[out] config CANFD配置
* @return truefalse
*/
virtual bool getConfig(CanFdConfig& config) = 0;
/**
* @brief CANFD控制器配置
* @param config CANFD配置
* @return truefalse
*/
virtual bool setConfig(const CanFdConfig& config) = 0;
/**
* @brief CANFD控制器实例
* @return CANFD控制器实例
*/
static CanFdController* createCanFdController();
};
} // namespace can
} // namespace usb2can
#endif // USB2CAN_CAN_FD_CONTROLLER_H