blob: 2129ec3616657ded9be9a28e9ba02f52b9b513dc [file] [log] [blame]
Brian Silverman811f8ec2015-12-06 01:29:42 -05001#include "frc971/wpilib/wpilib_interface.h"
2
Brian Silverman811f8ec2015-12-06 01:29:42 -05003#include "aos/common/messages/robot_state.q.h"
4#include "aos/common/logging/queue_logging.h"
5
Brian Silvermancee260a2015-12-24 16:27:51 -08006#include "DriverStation.h"
7#include "ControllerPower.h"
8#undef ERROR
9
Brian Silverman811f8ec2015-12-06 01:29:42 -050010namespace frc971 {
11namespace wpilib {
12
Brian Silvermanc7e8fdd2015-12-06 02:48:27 -050013void SendRobotState(int32_t my_pid, DriverStation *ds,
14 PowerDistributionPanel *pdp) {
Brian Silverman811f8ec2015-12-06 01:29:42 -050015 auto new_state = ::aos::robot_state.MakeMessage();
16
17 new_state->reader_pid = my_pid;
18 new_state->outputs_enabled = ds->IsSysActive();
19 new_state->browned_out = ds->IsSysBrownedOut();
20
21 new_state->is_3v3_active = ControllerPower::GetEnabled3V3();
22 new_state->is_5v_active = ControllerPower::GetEnabled5V();
23 new_state->voltage_3v3 = ControllerPower::GetVoltage3V3();
24 new_state->voltage_5v = ControllerPower::GetVoltage5V();
25
26 new_state->voltage_roborio_in = ControllerPower::GetInputVoltage();
27 new_state->voltage_battery = ds->GetBatteryVoltage();
28
Brian Silvermanc7e8fdd2015-12-06 02:48:27 -050029 new_state->pdp_voltage = pdp->GetVoltage();
30 new_state->pdp_temperature = pdp->GetTemperature();
31 new_state->pdp_power = pdp->GetTotalPower();
32 for (int i = 0; i < 16; ++i) {
33 new_state->pdp_currents[i] = pdp->GetCurrent(i);
34 }
35
Brian Silverman811f8ec2015-12-06 01:29:42 -050036 LOG_STRUCT(DEBUG, "robot_state", *new_state);
37
38 new_state.Send();
39}
40
41} // namespace wpilib
42} // namespace frc971