blob: 987605d9b6875b1481249b739988abe79a379aa3 [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
Stephan Pleinesd99b1ee2024-02-02 20:56:44 -08006namespace frc971::wpilib {
Maxwell Henderson74059a42023-12-22 17:40:15 -08007
8class CANDrivetrainWriter : public ::frc971::wpilib::LoopOutputHandler<
9 ::frc971::control_loops::drivetrain::Output> {
10 public:
11 CANDrivetrainWriter(::aos::EventLoop *event_loop);
12
Maxwell Henderson10ed5c32024-01-09 12:40:54 -080013 void set_talonfxs(std::vector<std::shared_ptr<TalonFX>> right_talonfxs,
14 std::vector<std::shared_ptr<TalonFX>> left_talonfxs);
Maxwell Henderson74059a42023-12-22 17:40:15 -080015
16 void HandleCANConfiguration(const CANConfiguration &configuration);
17
18 static constexpr int kDrivetrainWriterPriority = 35;
19
20 private:
21 void WriteConfigs();
22
23 void Write(
24 const ::frc971::control_loops::drivetrain::Output &output) override;
25
26 void Stop() override;
27
Maxwell Henderson10ed5c32024-01-09 12:40:54 -080028 std::vector<std::shared_ptr<TalonFX>> right_talonfxs_;
29 std::vector<std::shared_ptr<TalonFX>> left_talonfxs_;
Maxwell Henderson74059a42023-12-22 17:40:15 -080030};
31
Stephan Pleinesd99b1ee2024-02-02 20:56:44 -080032} // namespace frc971::wpilib