blob: ea97796cdf1ec2f8c2ab02b5a0da7e9aaa4e402c [file] [log] [blame]
Brian Silvermanda45b6c2014-12-28 11:36:50 -08001#include "frc971/wpilib/joystick_sender.h"
2
3#include "aos/common/messages/robot_state.q.h"
4#include "aos/linux_code/init.h"
5#include "aos/common/network/team_number.h"
6#include "aos/common/logging/queue_logging.h"
7
8#include "DriverStation.h"
9
10namespace frc971 {
11namespace wpilib {
12
13void JoystickSender::operator()() {
14 DriverStation *ds = DriverStation::GetInstance();
Brian Silvermanbd925f92014-12-31 14:28:06 -080015 ::aos::SetCurrentThreadName("DSReader");
Brian Silvermanda45b6c2014-12-28 11:36:50 -080016 uint16_t team_id = ::aos::network::GetTeamNumber();
17
Brian Silvermanbd925f92014-12-31 14:28:06 -080018 ::aos::SetCurrentThreadRealtimePriority(29);
19
Brian Silvermanda45b6c2014-12-28 11:36:50 -080020 while (run_) {
21 ds->WaitForData();
22 auto new_state = ::aos::robot_state.MakeMessage();
23
24 new_state->test_mode = ds->IsAutonomous();
25 new_state->fms_attached = ds->IsFMSAttached();
26 new_state->enabled = ds->IsEnabled();
27 new_state->autonomous = ds->IsAutonomous();
28 new_state->team_id = team_id;
29 new_state->fake = false;
30
31 for (int i = 0; i < 4; ++i) {
Brian Silverman5e233772015-01-01 13:25:44 -080032 new_state->joysticks[i].buttons = ds->GetStickButtons(i);
Brian Silvermanda45b6c2014-12-28 11:36:50 -080033 for (int j = 0; j < 4; ++j) {
34 new_state->joysticks[i].axis[j] = ds->GetStickAxis(i, j);
35 }
36 }
37 LOG_STRUCT(DEBUG, "robot_state", *new_state);
38
39 if (!new_state.Send()) {
40 LOG(WARNING, "sending robot_state failed\n");
41 }
42 }
43}
44
45} // namespace wpilib
46} // namespace frc971