blob: 1c0ba9591ab3bdb4c803d468cd00e12e79c86b35 [file] [log] [blame]
Maxwell Henderson74059a42023-12-22 17:40:15 -08001#include "frc971/can_configuration_generated.h"
2#include "frc971/control_loops/drivetrain/drivetrain_output_generated.h"
Maxwell Henderson74059a42023-12-22 17:40:15 -08003#include "frc971/wpilib/loop_output_handler.h"
Maxwell Henderson10ed5c32024-01-09 12:40:54 -08004#include "frc971/wpilib/talonfx.h"
Maxwell Henderson74059a42023-12-22 17:40:15 -08005
6namespace frc971 {
7namespace wpilib {
8
9class CANDrivetrainWriter : public ::frc971::wpilib::LoopOutputHandler<
10 ::frc971::control_loops::drivetrain::Output> {
11 public:
12 CANDrivetrainWriter(::aos::EventLoop *event_loop);
13
Maxwell Henderson10ed5c32024-01-09 12:40:54 -080014 void set_talonfxs(std::vector<std::shared_ptr<TalonFX>> right_talonfxs,
15 std::vector<std::shared_ptr<TalonFX>> left_talonfxs);
Maxwell Henderson74059a42023-12-22 17:40:15 -080016
17 void HandleCANConfiguration(const CANConfiguration &configuration);
18
19 static constexpr int kDrivetrainWriterPriority = 35;
20
21 private:
22 void WriteConfigs();
23
24 void Write(
25 const ::frc971::control_loops::drivetrain::Output &output) override;
26
27 void Stop() override;
28
Maxwell Henderson10ed5c32024-01-09 12:40:54 -080029 std::vector<std::shared_ptr<TalonFX>> right_talonfxs_;
30 std::vector<std::shared_ptr<TalonFX>> left_talonfxs_;
Maxwell Henderson74059a42023-12-22 17:40:15 -080031};
32
33} // namespace wpilib
34} // namespace frc971