Make monotonic_now a required parameter to PhasedLoop
This prepares us much better for mocking out time as part of the event
loop conversion.
Change-Id: I57560b97b265ddd41fe7a4e9f74d7b1324d15955
diff --git a/y2016/actors/autonomous_actor.cc b/y2016/actors/autonomous_actor.cc
index 74a1282..f486d38 100644
--- a/y2016/actors/autonomous_actor.cc
+++ b/y2016/actors/autonomous_actor.cc
@@ -166,6 +166,7 @@
}
::aos::time::PhasedLoop phased_loop(::std::chrono::milliseconds(5),
+ event_loop()->monotonic_now(),
::std::chrono::milliseconds(5) / 2);
while (true) {
if (ShouldCancel()) return;
@@ -183,6 +184,7 @@
void AutonomousActor::WaitForShooterSpeed() {
::aos::time::PhasedLoop phased_loop(::std::chrono::milliseconds(5),
+ event_loop()->monotonic_now(),
::std::chrono::milliseconds(5) / 2);
while (true) {
if (ShouldCancel()) return;
@@ -211,6 +213,7 @@
int ready_to_fire = 0;
::aos::time::PhasedLoop phased_loop(::std::chrono::milliseconds(5),
+ event_loop()->monotonic_now(),
::std::chrono::milliseconds(5) / 2);
monotonic_clock::time_point end_time =
monotonic_clock::now() + align_duration;
@@ -552,6 +555,7 @@
void AutonomousActor::WaitForBallOrDriveDone() {
::aos::time::PhasedLoop phased_loop(::std::chrono::milliseconds(5),
+ event_loop()->monotonic_now(),
::std::chrono::milliseconds(5) / 2);
while (true) {
if (ShouldCancel()) {
@@ -927,6 +931,7 @@
::aos::time::DurationInSeconds(monotonic_clock::now() - start_time));
::aos::time::PhasedLoop phased_loop(::std::chrono::milliseconds(5),
+ event_loop()->monotonic_now(),
::std::chrono::milliseconds(5) / 2);
while (!ShouldCancel()) {
diff --git a/y2016/actors/vision_align_actor.cc b/y2016/actors/vision_align_actor.cc
index fba545e..1110f92 100644
--- a/y2016/actors/vision_align_actor.cc
+++ b/y2016/actors/vision_align_actor.cc
@@ -34,6 +34,7 @@
const double robot_radius =
control_loops::drivetrain::GetDrivetrainConfig().robot_radius;
::aos::time::PhasedLoop phased_loop(::std::chrono::milliseconds(5),
+ event_loop()->monotonic_now(),
::std::chrono::milliseconds(5) / 2);
while (true) {
const int iterations = phased_loop.SleepUntilNext();
diff --git a/y2016/dashboard/dashboard.cc b/y2016/dashboard/dashboard.cc
index 98fcd7b..300986e 100644
--- a/y2016/dashboard/dashboard.cc
+++ b/y2016/dashboard/dashboard.cc
@@ -49,7 +49,8 @@
//#define DASHBOARD_READ_VISION_QUEUE
DataCollector::DataCollector(::aos::EventLoop *event_loop)
- : vision_status_fetcher_(
+ : event_loop_(event_loop),
+ vision_status_fetcher_(
event_loop->MakeFetcher<::y2016::vision::VisionStatus>(
".y2016.vision.vision_status")),
ball_detector_fetcher_(
@@ -235,6 +236,7 @@
::aos::SetCurrentThreadName("DashboardData");
::aos::time::PhasedLoop phased_loop(chrono::milliseconds(100),
+ event_loop_->monotonic_now(),
chrono::seconds(0));
while (run_) {
phased_loop.SleepUntilNext();
diff --git a/y2016/dashboard/dashboard.h b/y2016/dashboard/dashboard.h
index 2e01f40..58c9890 100644
--- a/y2016/dashboard/dashboard.h
+++ b/y2016/dashboard/dashboard.h
@@ -65,6 +65,8 @@
::std::vector<ItemDatapoint> datapoints;
};
+ ::aos::EventLoop *event_loop_;
+
::aos::Fetcher<::y2016::vision::VisionStatus> vision_status_fetcher_;
::aos::Fetcher<::y2016::sensors::BallDetector> ball_detector_fetcher_;
::aos::Fetcher<::frc971::autonomous::AutonomousMode> autonomous_mode_fetcher_;
diff --git a/y2016/wpilib_interface.cc b/y2016/wpilib_interface.cc
index 3b00248..86ac349 100644
--- a/y2016/wpilib_interface.cc
+++ b/y2016/wpilib_interface.cc
@@ -385,6 +385,7 @@
::aos::SetCurrentThreadRealtimePriority(27);
::aos::time::PhasedLoop phased_loop(::std::chrono::milliseconds(20),
+ ::aos::monotonic_clock::now(),
::std::chrono::milliseconds(1));
while (run_) {