blob: f5825c8b0c3f6c99e902bbd0650d240cd4427b16 [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"
James Kuszmaul7077d342021-06-09 20:23:58 -07005#include "frc971/input/robot_state_generated.h"
James Kuszmaulfd0f8962021-10-23 19:23:53 -07006#include "frc971/wpilib/ahal/Utility.h"
Austin Schuhf6b94632019-02-02 22:11:27 -08007#include "hal/HAL.h"
Brian Silvermane48dbc12017-02-04 20:06:29 -08008
Stephan Pleinesf63bde82024-01-13 15:59:33 -08009namespace frc971::wpilib {
Brian Silverman811f8ec2015-12-06 01:29:42 -050010
Alex Perrycb7da4b2019-08-28 19:35:56 -070011flatbuffers::Offset<aos::RobotState> PopulateRobotState(
12 aos::Sender<::aos::RobotState>::Builder *builder, int32_t my_pid) {
Austin Schuh94f51e92017-10-30 19:25:32 -070013 int32_t status = 0;
14
Alex Perrycb7da4b2019-08-28 19:35:56 -070015 aos::RobotState::Builder robot_state_builder =
16 builder->MakeBuilder<aos::RobotState>();
Brian Silverman811f8ec2015-12-06 01:29:42 -050017
Alex Perrycb7da4b2019-08-28 19:35:56 -070018 robot_state_builder.add_reader_pid(my_pid);
19 robot_state_builder.add_outputs_enabled(HAL_GetSystemActive(&status));
20 robot_state_builder.add_browned_out(HAL_GetBrownedOut(&status));
Brian Silverman811f8ec2015-12-06 01:29:42 -050021
Alex Perrycb7da4b2019-08-28 19:35:56 -070022 robot_state_builder.add_is_3v3_active(HAL_GetUserActive3V3(&status));
23 robot_state_builder.add_is_5v_active(HAL_GetUserActive5V(&status));
24 robot_state_builder.add_voltage_3v3(HAL_GetUserVoltage3V3(&status));
25 robot_state_builder.add_voltage_5v(HAL_GetUserVoltage5V(&status));
26
27 robot_state_builder.add_voltage_roborio_in(HAL_GetVinVoltage(&status));
28 robot_state_builder.add_voltage_battery(HAL_GetVinVoltage(&status));
James Kuszmaulfd0f8962021-10-23 19:23:53 -070029 robot_state_builder.add_user_button(frc::GetUserButton());
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
Stephan Pleinesf63bde82024-01-13 15:59:33 -080038} // namespace frc971::wpilib