blob: 44af93ade2939d6a01fac9524465fb7f007a196e [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) {
Campbell Crowley152c7cf2016-02-14 21:20:50 -080028 if (current_time_ - last_ds_time_ >= kDSPacketTime ||
29 last_enabled_ != enabled) {
Brian Silvermane6f64ab2015-02-05 17:03:56 -050030 last_ds_time_ = current_time_;
Brian Silverman699f0cb2015-02-05 19:45:01 -050031 auto new_state = ::aos::joystick_state.MakeMessage();
32 new_state->fake = true;
33
34 new_state->enabled = enabled;
35 new_state->autonomous = false;
Philipp Schraderf75a8bf2015-02-02 05:30:16 +000036 new_state->team_id = team_id_;
Brian Silverman699f0cb2015-02-05 19:45:01 -050037
38 new_state.Send();
Campbell Crowley152c7cf2016-02-14 21:20:50 -080039 last_enabled_ = enabled;
Brian Silverman65e49702014-04-30 17:36:40 -070040 }
Brian Silverman699f0cb2015-02-05 19:45:01 -050041
42 {
43 auto new_state = ::aos::robot_state.MakeMessage();
44
Brian Silverman57cad222015-02-14 20:46:41 -050045 new_state->reader_pid = reader_pid_;
Brian Silverman699f0cb2015-02-05 19:45:01 -050046 new_state->outputs_enabled = enabled;
47 new_state->browned_out = false;
48
49 new_state->is_3v3_active = true;
50 new_state->is_5v_active = true;
51 new_state->voltage_3v3 = 3.3;
52 new_state->voltage_5v = 5.0;
53
Austin Schuhe5f064d2016-03-05 17:43:51 -080054 new_state->voltage_roborio_in = battery_voltage_;
55 new_state->voltage_battery = battery_voltage_;
Brian Silverman699f0cb2015-02-05 19:45:01 -050056
57 new_state.Send();
Brian Silverman65e49702014-04-30 17:36:40 -070058 }
Brian Silverman65e49702014-04-30 17:36:40 -070059}
60
61} // namespace testing
62} // namespace aos