33 using Result = std::expected<void, std::string>;
35 MotorManager(
const MotorManager&) =
delete;
36 MotorManager(MotorManager&&) =
delete;
37 MotorManager& operator=(MotorManager&) =
delete;
38 MotorManager& operator=(MotorManager&&) =
delete;
79 using OutputArray = std::array<uint8_t, 16>;
80 using OutputPair = std::pair<OutputArray, Util::SpinLock>;
89 std::unordered_map<Can::CanDriver*, std::set<uint16_t>> driver_motor_ids;
91 std::unordered_map<Can::CanDriver*, OutputPair> driver_motor_outputs;
92 std::atomic<bool> stop_{
false};
93 std::unique_ptr<thread::Othread> thread_;