One Motor 0.6.0
RoboMaster全平台一站式电机驱动库
载入中...
搜索中...
未找到
CanDriver.hpp
浏览该文件的文档.
1
7#ifndef CANDRIVER_HPP
8#define CANDRIVER_HPP
9
10#include <string>
11#include <functional>
12#include <set>
13#include <memory>
14#include <unordered_map>
15#include <tl/expected.hpp>
16#include "CanFrame.hpp"
18
19#ifdef ONE_MOTOR_LINUX
20#include <HyCAN/Interface/Interface.hpp>
21#endif
22
23
24namespace OneMotor::Can
25{
35 {
36 public:
41 using CallbackFunc = std::function<void(CanFrame&&)>;
42
43#ifdef ONE_MOTOR_LINUX
48 explicit CanDriver(std::string interface_name);
49#else
54 explicit CanDriver(const device* device);
55#endif
56
61
62 CanDriver(const CanDriver&) = delete;
63 CanDriver& operator=(const CanDriver&) = delete;
64
65 tl::expected<bool, Error> is_open();
66
71 tl::expected<void, Error> open();
72
77 tl::expected<void, Error> close();
78
84 tl::expected<void, Error> send(const CanFrame& frame);
85
92#ifdef ONE_MOTOR_LINUX
93 tl::expected<void, Error> registerCallback(const std::set<size_t>& can_ids, const CallbackFunc& func);
94#else
95 tl::expected<void, Error> registerCallback(const std::set<size_t>& can_ids, const CallbackFunc& func);
96#endif
97
98 private:
99#ifdef ONE_MOTOR_LINUX
100 std::string interface_name;
101 HyCAN::CANInterface interface;
102#else
103 const device* can_dev;
104
105
106#endif
107 };
108}
109
110
111#endif //CANDRIVER_HPP
定义了与平台无关的CAN帧结构体。
定义 Error 结构体和 ErrorCode 枚举,用于表示操作错误并与 tl::expected 一起使用。
~CanDriver()
CanDriver 的析构函数。
tl::expected< void, Error > open()
打开CAN接口。
定义 L_CanDriver.cpp:27
std::function< void(CanFrame &&)> CallbackFunc
CAN帧接收回调函数的类型定义。
定义 CanDriver.hpp:41
tl::expected< void, Error > send(const CanFrame &frame)
发送一帧CAN数据。
定义 L_CanDriver.cpp:43
tl::expected< void, Error > close()
关闭CAN接口。
定义 L_CanDriver.cpp:35
tl::expected< void, Error > registerCallback(const std::set< size_t > &can_ids, const CallbackFunc &func)
注册一个回调函数,用于处理特定CAN ID的数据帧。
定义 L_CanDriver.cpp:51
CanDriver(const device *device)
CanDriver 的构造函数。
定义 Z_CanDriver.cpp:23
一个与平台无关的CAN帧结构体。
定义 CanFrame.hpp:36