blob: 5c6feb89a17c7ad347df72e2640e3ff86b13c4f8 [file] [log] [blame]
Sabina Davisd004fd62019-02-02 23:51:46 -08001#include "frc971/wpilib/drivetrain_writer.h"
2
3#include "aos/commonmath.h"
4#include "aos/logging/logging.h"
5#include "aos/logging/queue_logging.h"
6#include "frc971/control_loops/drivetrain/drivetrain.q.h"
7#include "frc971/wpilib/ahal/PWM.h"
8#include "frc971/wpilib/loop_output_handler.h"
9
10namespace frc971 {
11namespace wpilib {
12
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070013void DrivetrainWriter::Write(
14 const ::frc971::control_loops::DrivetrainQueue::Output &output) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070015 AOS_LOG_STRUCT(DEBUG, "will output", output);
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070016 left_controller0_->SetSpeed(SafeSpeed(reversed_left0_, output.left_voltage));
Sabina Davisd004fd62019-02-02 23:51:46 -080017 right_controller0_->SetSpeed(
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070018 SafeSpeed(reversed_right0_, output.right_voltage));
Sabina Davisd004fd62019-02-02 23:51:46 -080019
20 if (left_controller1_) {
21 left_controller1_->SetSpeed(
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070022 SafeSpeed(reversed_left1_, output.left_voltage));
Sabina Davisd004fd62019-02-02 23:51:46 -080023 }
24 if (right_controller1_) {
25 right_controller1_->SetSpeed(
Austin Schuhbd1fe9c2019-06-29 16:35:48 -070026 SafeSpeed(reversed_right1_, output.right_voltage));
Sabina Davisd004fd62019-02-02 23:51:46 -080027 }
28}
29
Sabina Davisd004fd62019-02-02 23:51:46 -080030void DrivetrainWriter::Stop() {
Austin Schuhf257f3c2019-10-27 21:00:43 -070031 AOS_LOG(WARNING, "drivetrain output too old\n");
Sabina Davisd004fd62019-02-02 23:51:46 -080032 left_controller0_->SetDisabled();
33 right_controller0_->SetDisabled();
34
35 if (left_controller1_) {
36 left_controller1_->SetDisabled();
37 }
38 if (right_controller1_) {
39 right_controller1_->SetDisabled();
40 }
41}
42
43} // namespace wpilib
44} // namespace frc971