blob: 8772af1fda2f2628aeb01ae99ffef719316d7fc9 [file] [log] [blame]
Brian Silverman811f8ec2015-12-06 01:29:42 -05001#include "frc971/wpilib/wpilib_interface.h"
2
Alex Perrycb7da4b2019-08-28 19:35:56 -07003#include "aos/events/event_loop.h"
4#include "aos/logging/logging.h"
5#include "aos/robot_state/robot_state_generated.h"
Brian Silverman811f8ec2015-12-06 01:29:42 -05006
Austin Schuhf6b94632019-02-02 22:11:27 -08007#include "hal/HAL.h"
Brian Silvermane48dbc12017-02-04 20:06:29 -08008
Brian Silverman811f8ec2015-12-06 01:29:42 -05009namespace frc971 {
10namespace wpilib {
11
Alex Perrycb7da4b2019-08-28 19:35:56 -070012flatbuffers::Offset<aos::RobotState> PopulateRobotState(
13 aos::Sender<::aos::RobotState>::Builder *builder, int32_t my_pid) {
Austin Schuh94f51e92017-10-30 19:25:32 -070014 int32_t status = 0;
15
Alex Perrycb7da4b2019-08-28 19:35:56 -070016 aos::RobotState::Builder robot_state_builder =
17 builder->MakeBuilder<aos::RobotState>();
Brian Silverman811f8ec2015-12-06 01:29:42 -050018
Alex Perrycb7da4b2019-08-28 19:35:56 -070019 robot_state_builder.add_reader_pid(my_pid);
20 robot_state_builder.add_outputs_enabled(HAL_GetSystemActive(&status));
21 robot_state_builder.add_browned_out(HAL_GetBrownedOut(&status));
Brian Silverman811f8ec2015-12-06 01:29:42 -050022
Alex Perrycb7da4b2019-08-28 19:35:56 -070023 robot_state_builder.add_is_3v3_active(HAL_GetUserActive3V3(&status));
24 robot_state_builder.add_is_5v_active(HAL_GetUserActive5V(&status));
25 robot_state_builder.add_voltage_3v3(HAL_GetUserVoltage3V3(&status));
26 robot_state_builder.add_voltage_5v(HAL_GetUserVoltage5V(&status));
27
28 robot_state_builder.add_voltage_roborio_in(HAL_GetVinVoltage(&status));
29 robot_state_builder.add_voltage_battery(HAL_GetVinVoltage(&status));
Brian Silverman811f8ec2015-12-06 01:29:42 -050030
Austin Schuhdf6cbb12019-02-02 13:46:52 -080031 if (status != 0) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070032 AOS_LOG(FATAL, "Failed to get robot state: %d\n", status);
Austin Schuhdf6cbb12019-02-02 13:46:52 -080033 }
Alex Perrycb7da4b2019-08-28 19:35:56 -070034
35 return robot_state_builder.Finish();
Brian Silverman811f8ec2015-12-06 01:29:42 -050036}
37
38} // namespace wpilib
39} // namespace frc971