Log more info from the PDP
Change-Id: I9313b1ff1608d73be4589263950c9f0a6dc20737
diff --git a/aos/common/messages/robot_state.q b/aos/common/messages/robot_state.q
index 3ecb653..a99627e 100644
--- a/aos/common/messages/robot_state.q
+++ b/aos/common/messages/robot_state.q
@@ -59,6 +59,12 @@
// From the DriverStation object, aka what FMS sees and what shows up on the
// actual driver's station.
double voltage_battery;
+
+ // From the PDP directly.
+ double pdp_voltage;
+ double pdp_temperature;
+ double pdp_power;
+ double[16] pdp_currents;
};
// Messages are sent out on this queue along with reading sensors. It contains
diff --git a/frc971/wpilib/wpilib_interface.cc b/frc971/wpilib/wpilib_interface.cc
index 7827041..68e0771 100644
--- a/frc971/wpilib/wpilib_interface.cc
+++ b/frc971/wpilib/wpilib_interface.cc
@@ -9,7 +9,8 @@
namespace frc971 {
namespace wpilib {
-void SendRobotState(int32_t my_pid, DriverStation *ds) {
+void SendRobotState(int32_t my_pid, DriverStation *ds,
+ PowerDistributionPanel *pdp) {
auto new_state = ::aos::robot_state.MakeMessage();
new_state->reader_pid = my_pid;
@@ -24,6 +25,13 @@
new_state->voltage_roborio_in = ControllerPower::GetInputVoltage();
new_state->voltage_battery = ds->GetBatteryVoltage();
+ new_state->pdp_voltage = pdp->GetVoltage();
+ new_state->pdp_temperature = pdp->GetTemperature();
+ new_state->pdp_power = pdp->GetTotalPower();
+ for (int i = 0; i < 16; ++i) {
+ new_state->pdp_currents[i] = pdp->GetCurrent(i);
+ }
+
LOG_STRUCT(DEBUG, "robot_state", *new_state);
new_state.Send();
diff --git a/frc971/wpilib/wpilib_interface.h b/frc971/wpilib/wpilib_interface.h
index 216bf09..7d4b92d 100644
--- a/frc971/wpilib/wpilib_interface.h
+++ b/frc971/wpilib/wpilib_interface.h
@@ -3,13 +3,16 @@
#include <stdint.h>
+#include "PowerDistributionPanel.h"
+
class DriverStation;
namespace frc971 {
namespace wpilib {
// Sends out a message on ::aos::robot_state.
-void SendRobotState(int32_t my_pid, DriverStation *ds);
+void SendRobotState(int32_t my_pid, DriverStation *ds,
+ PowerDistributionPanel *pdp);
} // namespace wpilib
} // namespace frc971
diff --git a/y2014/wpilib/wpilib_interface.cc b/y2014/wpilib/wpilib_interface.cc
index 4352814..9d6b8b3 100644
--- a/y2014/wpilib/wpilib_interface.cc
+++ b/y2014/wpilib/wpilib_interface.cc
@@ -18,6 +18,7 @@
#ifndef WPILIB2015
#include "DigitalGlitchFilter.h"
#endif
+#include "PowerDistributionPanel.h"
#undef ERROR
#include "aos/common/logging/logging.h"
@@ -245,6 +246,7 @@
#else
&DriverStation::GetInstance();
#endif
+ pdp_.reset(new PowerDistributionPanel());
top_reader_.Start();
bottom_reader_.Start();
@@ -262,7 +264,7 @@
}
void RunIteration() {
- ::frc971::wpilib::SendRobotState(my_pid_, ds_);
+ ::frc971::wpilib::SendRobotState(my_pid_, ds_, pdp_.get());
const auto &values = constants::GetValues();
@@ -417,6 +419,7 @@
int32_t my_pid_;
DriverStation *ds_;
+ ::std::unique_ptr<PowerDistributionPanel> pdp_;
::std::unique_ptr<DMASynchronizer> dma_synchronizer_;
diff --git a/y2014_bot3/wpilib/wpilib_interface.cc b/y2014_bot3/wpilib/wpilib_interface.cc
index 096f526..5dcb838 100644
--- a/y2014_bot3/wpilib/wpilib_interface.cc
+++ b/y2014_bot3/wpilib/wpilib_interface.cc
@@ -16,6 +16,7 @@
#include "RobotBase.h"
#include "dma.h"
#include "DigitalInput.h"
+#include "PowerDistributionPanel.h"
#undef ERROR
#include "aos/common/logging/logging.h"
@@ -88,6 +89,7 @@
#else
&DriverStation::GetInstance();
#endif
+ pdp_.reset(new PowerDistributionPanel());
LOG(INFO, "Things are now started\n");
@@ -99,7 +101,7 @@
}
void RunIteration() {
- ::frc971::wpilib::SendRobotState(my_pid_, ds_);
+ ::frc971::wpilib::SendRobotState(my_pid_, ds_, pdp_.get());
// Drivetrain
{
@@ -127,6 +129,7 @@
int32_t my_pid_;
DriverStation *ds_;
+ ::std::unique_ptr<PowerDistributionPanel> pdp_;
::std::unique_ptr<Encoder> drivetrain_left_encoder_;
::std::unique_ptr<Encoder> drivetrain_right_encoder_;
diff --git a/y2015/wpilib/wpilib_interface.cc b/y2015/wpilib/wpilib_interface.cc
index c1d9628..fa7d14a 100644
--- a/y2015/wpilib/wpilib_interface.cc
+++ b/y2015/wpilib/wpilib_interface.cc
@@ -18,6 +18,7 @@
#ifndef WPILIB2015
#include "DigitalGlitchFilter.h"
#endif
+#include "PowerDistributionPanel.h"
#undef ERROR
#include "aos/common/logging/logging.h"
@@ -229,6 +230,7 @@
#else
&DriverStation::GetInstance();
#endif
+ pdp_.reset(new PowerDistributionPanel());
wrist_encoder_.Start();
dma_synchronizer_->Start();
@@ -244,7 +246,7 @@
}
void RunIteration() {
- ::frc971::wpilib::SendRobotState(my_pid_, ds_);
+ ::frc971::wpilib::SendRobotState(my_pid_, ds_, pdp_.get());
{
auto drivetrain_message = drivetrain_queue.position.MakeMessage();
@@ -297,6 +299,7 @@
int32_t my_pid_;
DriverStation *ds_;
+ ::std::unique_ptr<PowerDistributionPanel> pdp_;
void CopyPotAndIndexPosition(
const DMAEncoderAndPotentiometer &encoder, PotAndIndexPosition *position,
diff --git a/y2015_bot3/wpilib/wpilib_interface.cc b/y2015_bot3/wpilib/wpilib_interface.cc
index 4dfae3f..554e0a6 100644
--- a/y2015_bot3/wpilib/wpilib_interface.cc
+++ b/y2015_bot3/wpilib/wpilib_interface.cc
@@ -19,6 +19,7 @@
#include "DigitalGlitchFilter.h"
#endif
#include "DigitalInput.h"
+#include "PowerDistributionPanel.h"
#undef ERROR
#include "aos/common/logging/logging.h"
@@ -128,6 +129,7 @@
#else
&DriverStation::GetInstance();
#endif
+ pdp_.reset(new PowerDistributionPanel());
LOG(INFO, "Things are now started\n");
@@ -139,7 +141,7 @@
}
void RunIteration() {
- ::frc971::wpilib::SendRobotState(my_pid_, ds_);
+ ::frc971::wpilib::SendRobotState(my_pid_, ds_, pdp_.get());
// Drivetrain
{
@@ -179,6 +181,7 @@
int32_t my_pid_;
DriverStation *ds_;
+ ::std::unique_ptr<PowerDistributionPanel> pdp_;
::std::unique_ptr<Encoder> left_encoder_, right_encoder_, elevator_encoder_;
::std::unique_ptr<DigitalInput> zeroing_hall_effect_;