blob: 4dddd91a860b27d691958ee8ad9f4b7fb9ea9014 [file] [log] [blame]
Brian Silverman811f8ec2015-12-06 01:29:42 -05001#include "frc971/wpilib/wpilib_interface.h"
2
John Park33858a32018-09-28 23:05:48 -07003#include "aos/robot_state/robot_state.q.h"
4#include "aos/logging/queue_logging.h"
Brian Silverman811f8ec2015-12-06 01:29:42 -05005
Austin Schuhf6b94632019-02-02 22:11:27 -08006#include "hal/HAL.h"
Brian Silvermane48dbc12017-02-04 20:06:29 -08007
Brian Silverman811f8ec2015-12-06 01:29:42 -05008namespace frc971 {
9namespace wpilib {
10
Austin Schuh94f51e92017-10-30 19:25:32 -070011void SendRobotState(int32_t my_pid) {
Brian Silverman811f8ec2015-12-06 01:29:42 -050012 auto new_state = ::aos::robot_state.MakeMessage();
13
Austin Schuh94f51e92017-10-30 19:25:32 -070014 int32_t status = 0;
15
Brian Silverman811f8ec2015-12-06 01:29:42 -050016 new_state->reader_pid = my_pid;
Austin Schuh94f51e92017-10-30 19:25:32 -070017 new_state->outputs_enabled = HAL_GetSystemActive(&status);
18 new_state->browned_out = HAL_GetBrownedOut(&status);
Brian Silverman811f8ec2015-12-06 01:29:42 -050019
Austin Schuh94f51e92017-10-30 19:25:32 -070020 new_state->is_3v3_active = HAL_GetUserActive3V3(&status);
21 new_state->is_5v_active = HAL_GetUserActive5V(&status);
22 new_state->voltage_3v3 = HAL_GetUserVoltage3V3(&status);
23 new_state->voltage_5v = HAL_GetUserVoltage5V(&status);
Brian Silverman811f8ec2015-12-06 01:29:42 -050024
Austin Schuh94f51e92017-10-30 19:25:32 -070025 new_state->voltage_roborio_in = HAL_GetVinVoltage(&status);
26 new_state->voltage_battery = HAL_GetVinVoltage(&status);
Brian Silverman811f8ec2015-12-06 01:29:42 -050027
Brian Silverman811f8ec2015-12-06 01:29:42 -050028 LOG_STRUCT(DEBUG, "robot_state", *new_state);
29
30 new_state.Send();
31}
32
33} // namespace wpilib
34} // namespace frc971