blob: 52f3df2c3a365a1433b7b05dd94ddd31c3080764 [file] [log] [blame]
Tyler Chatowf31da682017-01-22 01:39:40 +00001#include "y2017/actors/autonomous_actor.h"
2
3#include <inttypes.h>
4
5#include <chrono>
6#include <cmath>
7
8#include "aos/common/util/phased_loop.h"
9#include "aos/common/logging/logging.h"
10
11#include "frc971/control_loops/drivetrain/drivetrain.q.h"
Philipp Schrader996a2a22017-02-22 05:02:48 +000012#include "y2017/control_loops/drivetrain/drivetrain_base.h"
Tyler Chatowf31da682017-01-22 01:39:40 +000013
14namespace y2017 {
15namespace actors {
16using ::frc971::control_loops::drivetrain_queue;
17using ::aos::monotonic_clock;
18namespace chrono = ::std::chrono;
19namespace this_thread = ::std::this_thread;
20
21namespace {
22double DoubleSeconds(monotonic_clock::duration duration) {
23 return ::std::chrono::duration_cast<::std::chrono::duration<double>>(duration)
24 .count();
25}
26} // namespace
27
Philipp Schrader996a2a22017-02-22 05:02:48 +000028AutonomousActor::AutonomousActor(
29 ::frc971::autonomous::AutonomousActionQueueGroup *s)
30 : frc971::autonomous::BaseAutonomousActor(
31 s, control_loops::drivetrain::GetDrivetrainConfig()) {}
Tyler Chatowf31da682017-01-22 01:39:40 +000032
Philipp Schrader996a2a22017-02-22 05:02:48 +000033bool AutonomousActor::RunAction(
34 const ::frc971::autonomous::AutonomousActionParams &params) {
Tyler Chatowf31da682017-01-22 01:39:40 +000035 monotonic_clock::time_point start_time = monotonic_clock::now();
36 LOG(INFO, "Starting autonomous action with mode %" PRId32 "\n", params.mode);
37
38 switch (params.mode) {
39 case 0:
40 break;
41
42 default:
43 LOG(ERROR, "Invalid auto mode %d\n", params.mode);
44 return true;
45 }
46
47 LOG(INFO, "Done %f\n", DoubleSeconds(monotonic_clock::now() - start_time));
48
49 ::aos::time::PhasedLoop phased_loop(::std::chrono::milliseconds(5),
50 ::std::chrono::milliseconds(5) / 2);
51
52 while (!ShouldCancel()) {
53 phased_loop.SleepUntilNext();
54 }
55 LOG(DEBUG, "Done running\n");
56
57 return true;
58}
59
Tyler Chatowf31da682017-01-22 01:39:40 +000060} // namespace actors
61} // namespace y2017