blob: 6c881f217ef270f88c98202e7fa6acd461020277 [file] [log] [blame]
Brian Silverman65e49702014-04-30 17:36:40 -07001#include "aos/common/controls/control_loop_test.h"
2
3#include "aos/common/messages/robot_state.q.h"
Brian Silverman65e49702014-04-30 17:36:40 -07004
5namespace aos {
6namespace testing {
7
Brian Silvermane6f64ab2015-02-05 17:03:56 -05008constexpr ::aos::time::Time ControlLoopTest::kTimeTick;
9constexpr ::aos::time::Time ControlLoopTest::kDSPacketTime;
10
Brian Silverman65e49702014-04-30 17:36:40 -070011ControlLoopTest::ControlLoopTest() {
Brian Silverman699f0cb2015-02-05 19:45:01 -050012 ::aos::joystick_state.Clear();
Brian Silverman65e49702014-04-30 17:36:40 -070013 ::aos::robot_state.Clear();
Brian Silverman65e49702014-04-30 17:36:40 -070014
Brian Silvermanbbc86782014-08-19 12:13:05 -040015 ::aos::time::Time::EnableMockTime(current_time_);
Brian Silverman65e49702014-04-30 17:36:40 -070016
Brian Silverman699f0cb2015-02-05 19:45:01 -050017 SendMessages(false);
Brian Silverman65e49702014-04-30 17:36:40 -070018}
19
20ControlLoopTest::~ControlLoopTest() {
Brian Silverman699f0cb2015-02-05 19:45:01 -050021 ::aos::joystick_state.Clear();
Brian Silverman65e49702014-04-30 17:36:40 -070022 ::aos::robot_state.Clear();
Brian Silverman65e49702014-04-30 17:36:40 -070023
24 ::aos::time::Time::DisableMockTime();
25}
26
Brian Silvermane6f64ab2015-02-05 17:03:56 -050027void ControlLoopTest::SendMessages(bool enabled) {
28 if (current_time_ - last_ds_time_ >= kDSPacketTime) {
Brian Silvermane6f64ab2015-02-05 17:03:56 -050029 last_ds_time_ = current_time_;
Brian Silverman699f0cb2015-02-05 19:45:01 -050030 auto new_state = ::aos::joystick_state.MakeMessage();
31 new_state->fake = true;
32
33 new_state->enabled = enabled;
34 new_state->autonomous = false;
Philipp Schraderf75a8bf2015-02-02 05:30:16 +000035 new_state->team_id = team_id_;
Brian Silverman699f0cb2015-02-05 19:45:01 -050036
37 new_state.Send();
Brian Silverman65e49702014-04-30 17:36:40 -070038 }
Brian Silverman699f0cb2015-02-05 19:45:01 -050039
40 {
41 auto new_state = ::aos::robot_state.MakeMessage();
42
Brian Silverman57cad222015-02-14 20:46:41 -050043 new_state->reader_pid = reader_pid_;
Brian Silverman699f0cb2015-02-05 19:45:01 -050044 new_state->outputs_enabled = enabled;
45 new_state->browned_out = false;
46
47 new_state->is_3v3_active = true;
48 new_state->is_5v_active = true;
49 new_state->voltage_3v3 = 3.3;
50 new_state->voltage_5v = 5.0;
51
52 new_state->voltage_roborio_in = 12.4;
Austin Schuh829e6ad2015-11-08 14:10:37 -080053 new_state->voltage_battery = 12.4;
Brian Silverman699f0cb2015-02-05 19:45:01 -050054
55 new_state.Send();
Brian Silverman65e49702014-04-30 17:36:40 -070056 }
Brian Silverman65e49702014-04-30 17:36:40 -070057}
58
59} // namespace testing
60} // namespace aos