Clean up the realtime priorities of all the robots etc
Change-Id: Ie19ea31ec7b19d9660230477e5f77de9edc5eb59
diff --git a/y2015/actors/can_pickup_actor_main.cc b/y2015/actors/can_pickup_actor_main.cc
index bed9412..1afb500 100644
--- a/y2015/actors/can_pickup_actor_main.cc
+++ b/y2015/actors/can_pickup_actor_main.cc
@@ -5,7 +5,7 @@
#include "y2015/actors/can_pickup_actor.h"
int main(int /*argc*/, char* /*argv*/ []) {
- ::aos::Init();
+ ::aos::Init(-1);
::frc971::actors::CanPickupActor can_pickup(&::frc971::actors::can_pickup_action);
can_pickup.Run();
diff --git a/y2015/actors/drivetrain_actor_main.cc b/y2015/actors/drivetrain_actor_main.cc
index 7e461ff..6f567d7 100644
--- a/y2015/actors/drivetrain_actor_main.cc
+++ b/y2015/actors/drivetrain_actor_main.cc
@@ -7,7 +7,7 @@
using ::aos::time::Time;
int main(int /*argc*/, char * /*argv*/[]) {
- ::aos::Init();
+ ::aos::Init(-1);
frc971::actors::DrivetrainActor drivetrain(
&::frc971::actors::drivetrain_action);
diff --git a/y2015/actors/held_to_lift_actor_main.cc b/y2015/actors/held_to_lift_actor_main.cc
index a5d78e1..705a073 100644
--- a/y2015/actors/held_to_lift_actor_main.cc
+++ b/y2015/actors/held_to_lift_actor_main.cc
@@ -5,7 +5,7 @@
#include "y2015/actors/held_to_lift_actor.h"
int main(int /*argc*/, char* /*argv*/ []) {
- ::aos::Init();
+ ::aos::Init(-1);
::frc971::actors::HeldToLiftActor lift(
&::frc971::actors::held_to_lift_action);
diff --git a/y2015/actors/horizontal_can_pickup_actor_main.cc b/y2015/actors/horizontal_can_pickup_actor_main.cc
index 67f986c..fbe8c0d 100644
--- a/y2015/actors/horizontal_can_pickup_actor_main.cc
+++ b/y2015/actors/horizontal_can_pickup_actor_main.cc
@@ -5,7 +5,7 @@
#include "y2015/actors/horizontal_can_pickup_actor.h"
int main(int /*argc*/, char* /*argv*/ []) {
- ::aos::Init();
+ ::aos::Init(-1);
::frc971::actors::HorizontalCanPickupActor horizontal_can_pickup(
&::frc971::actors::horizontal_can_pickup_action);
diff --git a/y2015/actors/lift_actor_main.cc b/y2015/actors/lift_actor_main.cc
index ed809ef..68389ca 100644
--- a/y2015/actors/lift_actor_main.cc
+++ b/y2015/actors/lift_actor_main.cc
@@ -5,7 +5,7 @@
#include "y2015/actors/lift_actor.h"
int main(int /*argc*/, char* /*argv*/ []) {
- ::aos::Init();
+ ::aos::Init(-1);
::frc971::actors::LiftActor lift(&::frc971::actors::lift_action);
lift.Run();
diff --git a/y2015/actors/pickup_actor_main.cc b/y2015/actors/pickup_actor_main.cc
index 9c2c488..0ddda42 100644
--- a/y2015/actors/pickup_actor_main.cc
+++ b/y2015/actors/pickup_actor_main.cc
@@ -5,7 +5,7 @@
#include "y2015/actors/pickup_actor.h"
int main(int /*argc*/, char* /*argv*/ []) {
- ::aos::Init();
+ ::aos::Init(-1);
frc971::actors::PickupActor pickup(&::frc971::actors::pickup_action);
pickup.Run();
diff --git a/y2015/actors/score_actor_main.cc b/y2015/actors/score_actor_main.cc
index cc149e6..754d3bd 100644
--- a/y2015/actors/score_actor_main.cc
+++ b/y2015/actors/score_actor_main.cc
@@ -5,7 +5,7 @@
#include "y2015/actors/score_actor.h"
int main(int /*argc*/, char* /*argv*/ []) {
- ::aos::Init();
+ ::aos::Init(-1);
frc971::actors::ScoreActor score(&::frc971::actors::score_action);
score.Run();
diff --git a/y2015/actors/stack_actor_main.cc b/y2015/actors/stack_actor_main.cc
index f65733c..03a3055 100644
--- a/y2015/actors/stack_actor_main.cc
+++ b/y2015/actors/stack_actor_main.cc
@@ -5,7 +5,7 @@
#include "y2015/actors/stack_actor.h"
int main(int /*argc*/, char* /*argv*/ []) {
- ::aos::Init();
+ ::aos::Init(-1);
::frc971::actors::StackActor stack(&::frc971::actors::stack_action);
stack.Run();
diff --git a/y2015/actors/stack_and_hold_actor_main.cc b/y2015/actors/stack_and_hold_actor_main.cc
index 3d5d1c1..b193dba 100644
--- a/y2015/actors/stack_and_hold_actor_main.cc
+++ b/y2015/actors/stack_and_hold_actor_main.cc
@@ -5,7 +5,7 @@
#include "y2015/actors/stack_and_hold_actor.h"
int main(int /*argc*/, char* /*argv*/ []) {
- ::aos::Init();
+ ::aos::Init(-1);
::frc971::actors::StackAndHoldActor stack_and_hold(
&::frc971::actors::stack_and_hold_action);
diff --git a/y2015/actors/stack_and_lift_actor_main.cc b/y2015/actors/stack_and_lift_actor_main.cc
index fe9f4b5..2118a32 100644
--- a/y2015/actors/stack_and_lift_actor_main.cc
+++ b/y2015/actors/stack_and_lift_actor_main.cc
@@ -5,7 +5,7 @@
#include "y2015/actors/stack_and_lift_actor.h"
int main(int /*argc*/, char* /*argv*/ []) {
- ::aos::Init();
+ ::aos::Init(-1);
::frc971::actors::StackAndLiftActor stack_and_lift(
&::frc971::actors::stack_and_lift_action);
diff --git a/y2015/autonomous/auto_main.cc b/y2015/autonomous/auto_main.cc
index 4a24e6c..776067a 100644
--- a/y2015/autonomous/auto_main.cc
+++ b/y2015/autonomous/auto_main.cc
@@ -9,7 +9,7 @@
using ::aos::time::Time;
int main(int /*argc*/, char * /*argv*/[]) {
- ::aos::Init();
+ ::aos::Init(-1);
LOG(INFO, "Auto main started\n");
::frc971::autonomous::autonomous.FetchLatest();
diff --git a/y2015/joystick_reader.cc b/y2015/joystick_reader.cc
index 3e43e35..f949c1a 100644
--- a/y2015/joystick_reader.cc
+++ b/y2015/joystick_reader.cc
@@ -550,7 +550,7 @@
} // namespace frc971
int main() {
- ::aos::Init();
+ ::aos::Init(-1);
::frc971::input::joysticks::Reader reader;
reader.Run();
::aos::Cleanup();
diff --git a/y2015/wpilib/wpilib_interface.cc b/y2015/wpilib/wpilib_interface.cc
index 9a6097e..e70c92f 100644
--- a/y2015/wpilib/wpilib_interface.cc
+++ b/y2015/wpilib/wpilib_interface.cc
@@ -242,9 +242,17 @@
wrist_encoder_.Start();
dma_synchronizer_->Start();
- ::aos::SetCurrentThreadRealtimePriority(kPriority);
+ ::aos::time::PhasedLoop phased_loop(::aos::time::Time::InMS(5),
+ ::aos::time::Time::InMS(4));
+
+ ::aos::SetCurrentThreadRealtimePriority(40);
while (run_) {
- ::aos::time::PhasedLoopXMS(5, 4000);
+ {
+ const int iterations = phased_loop.SleepUntilNext();
+ if (iterations != 1) {
+ LOG(WARNING, "SensorReader skipped %d iterations\n", iterations - 1);
+ }
+ }
RunIteration();
}
@@ -304,9 +312,6 @@
void Quit() { run_ = false; }
private:
- static const int kPriority = 30;
- static const int kInterruptPriority = 55;
-
int32_t my_pid_;
DriverStation *ds_;
::frc971::wpilib::PDPFetcher *const pdp_fetcher_;
@@ -357,7 +362,7 @@
DMAEncoderAndPotentiometer arm_left_encoder_, arm_right_encoder_,
elevator_left_encoder_, elevator_right_encoder_;
- InterruptEncoderAndPotentiometer wrist_encoder_{kInterruptPriority};
+ InterruptEncoderAndPotentiometer wrist_encoder_{55};
::std::unique_ptr<Encoder> left_encoder_;
::std::unique_ptr<Encoder> right_encoder_;
@@ -413,10 +418,18 @@
void operator()() {
::aos::SetCurrentThreadName("Solenoids");
- ::aos::SetCurrentThreadRealtimePriority(30);
+ ::aos::SetCurrentThreadRealtimePriority(27);
+
+ ::aos::time::PhasedLoop phased_loop(::aos::time::Time::InMS(20),
+ ::aos::time::Time::InMS(1));
while (run_) {
- ::aos::time::PhasedLoopXMS(20, 1000);
+ {
+ const int iterations = phased_loop.SleepUntilNext();
+ if (iterations != 1) {
+ LOG(DEBUG, "Solenoids skipped %d iterations\n", iterations - 1);
+ }
+ }
{
fridge_.FetchLatest();
@@ -727,7 +740,14 @@
::std::thread solenoid_thread(::std::ref(solenoid_writer));
// Wait forever. Not much else to do...
- PCHECK(select(0, nullptr, nullptr, nullptr, nullptr));
+ while (true) {
+ const int r = select(0, nullptr, nullptr, nullptr, nullptr);
+ if (r != 0) {
+ PLOG(WARNING, "infinite select failed");
+ } else {
+ PLOG(WARNING, "infinite select succeeded??\n");
+ }
+ }
LOG(ERROR, "Exiting WPILibRobot\n");