One Motor 0.6.0
RoboMaster全平台一站式电机驱动库
载入中...
搜索中...
未找到
MotorManager.hpp
浏览该文件的文档.
1
7#ifndef MOTORMANAGER_HPP
8#define MOTORMANAGER_HPP
9
10#include <atomic>
11#include <unordered_map>
12#include <memory>
13#include <set>
14#include <array>
15
19#include <tl/expected.hpp>
20
21namespace OneMotor::Motor::DJI
22{
35 class MotorManager
36 {
37 public:
38 MotorManager(const MotorManager&) = delete;
39 MotorManager(MotorManager&&) = delete;
40 MotorManager& operator=(MotorManager&) = delete;
41 MotorManager& operator=(MotorManager&&) = delete;
42
48
53 static MotorManager& getInstance();
54
61 tl::expected<void, Error> registerMotor(Can::CanDriver& driver, uint16_t canId) noexcept;
62
69 tl::expected<void, Error> deregisterMotor(Can::CanDriver& driver, uint16_t canId) noexcept;
70
80 void pushOutput(Can::CanDriver& driver, uint16_t control_can_id, uint8_t offset, uint8_t lo_value,
81 uint8_t hi_value) noexcept;
82
83 private:
88 MotorManager();
89
90
91 std::atomic<bool> stop_{false};
92 std::unique_ptr<Thread::Othread> thread_;
93 };
94}
95
96#endif //MOTORMANAGER_HPP
提供一个统一的CAN总线驱动接口。
定义 Error 结构体和 ErrorCode 枚举,用于表示操作错误并与 tl::expected 一起使用。
提供一个封装了不同平台线程操作的线程类。
CAN总线驱动类,封装了底层CAN接口的打开、关闭、发送和接收回调注册等操作。
定义 CanDriver.hpp:35
tl::expected< void, Error > deregisterMotor(Can::CanDriver &driver, uint16_t canId) noexcept
从管理器中注销一个电机。
定义 N_MotorManager.cpp:75
~MotorManager()
析构函数。
定义 N_MotorManager.cpp:28
void pushOutput(Can::CanDriver &driver, uint16_t control_can_id, uint8_t offset, uint8_t lo_value, uint8_t hi_value) noexcept
将一个电机的目标电流值推送到发送缓冲区。
定义 N_MotorManager.cpp:93
static MotorManager & getInstance()
获取MotorManager的单例实例。
定义 N_MotorManager.cpp:34
tl::expected< void, Error > registerMotor(Can::CanDriver &driver, uint16_t canId) noexcept
向管理器注册一个电机。
定义 N_MotorManager.cpp:40