Create an enum for sender errors

Will replace usages of bools, and will now currently only be used
for indicating that messages were sent too fast

After we merge this commit we will replace this enum with a general
Status class for all of aos, similar to absl::Status.

Change-Id: I4b5b2e7685744b3c6826a241cd3c84190eaa96ee
Signed-off-by: milind-u <milind.upadhyay@gmail.com>
diff --git a/y2017/actors/autonomous_actor.h b/y2017/actors/autonomous_actor.h
index f0bcfc8..5eed336 100644
--- a/y2017/actors/autonomous_actor.h
+++ b/y2017/actors/autonomous_actor.h
@@ -165,7 +165,7 @@
       goal->mutable_indexer()->mutate_voltage_rollers(0.0);
     }
 
-    if (!builder.Send(goal_offset)) {
+    if (builder.Send(goal_offset) != aos::RawSender::Error::kOk) {
       AOS_LOG(ERROR, "Sending superstructure goal failed.\n");
     }
   }
diff --git a/y2017/control_loops/superstructure/superstructure.cc b/y2017/control_loops/superstructure/superstructure.cc
index c707653..84da59c 100644
--- a/y2017/control_loops/superstructure/superstructure.cc
+++ b/y2017/control_loops/superstructure/superstructure.cc
@@ -260,10 +260,10 @@
   }
 
   if (output) {
-    output->Send(Output::Pack(*output->fbb(), &output_struct));
+    output->CheckOk(output->Send(Output::Pack(*output->fbb(), &output_struct)));
   }
 
-  status->Send(status_builder.Finish());
+  (void)status->Send(status_builder.Finish());
 }
 
 }  // namespace superstructure
diff --git a/y2017/control_loops/superstructure/superstructure_lib_test.cc b/y2017/control_loops/superstructure/superstructure_lib_test.cc
index 7690937..05ca333 100644
--- a/y2017/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2017/control_loops/superstructure/superstructure_lib_test.cc
@@ -246,7 +246,8 @@
     position_builder.add_intake(intake_offset);
     position_builder.add_hood(hood_offset);
 
-    builder.Send(position_builder.Finish());
+    ASSERT_EQ(builder.Send(position_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   double hood_position() const { return hood_plant_->X(0, 0); }
@@ -635,7 +636,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(5));
 
@@ -691,7 +693,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   // Give it a lot of time to get there.
@@ -738,7 +741,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(8));
   VerifyNearGoal();
@@ -789,7 +793,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   superstructure_plant_.set_peak_intake_velocity(23.0);
   superstructure_plant_.set_peak_turret_velocity(23.0);
@@ -844,7 +849,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   superstructure_plant_.set_peak_intake_velocity(0.2);
@@ -906,7 +912,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
 
@@ -964,7 +971,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(10));
@@ -1024,7 +1032,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(10));
@@ -1086,7 +1095,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(10));
@@ -1144,7 +1154,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
 
@@ -1192,7 +1203,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
 
@@ -1239,7 +1251,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
 
@@ -1271,7 +1284,8 @@
     auto builder = superstructure_goal_sender_.MakeBuilder();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   {
     auto builder = superstructure_goal_sender_.MakeBuilder();
@@ -1303,7 +1317,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::milliseconds(100));
@@ -1356,7 +1371,8 @@
     goal_builder.add_shooter(shooter_offset);
     goal_builder.add_indexer(indexer_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   // Run disabled for 2 seconds
@@ -1426,7 +1442,8 @@
     goal_builder.add_indexer(indexer_offset);
     goal_builder.add_shooter(shooter_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(5));
@@ -1462,7 +1479,8 @@
     goal_builder.add_indexer(indexer_offset);
     goal_builder.add_shooter(shooter_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   // Make sure we don't apply voltage on spin-down.
@@ -1508,7 +1526,8 @@
     goal_builder.add_indexer(indexer_offset);
     goal_builder.add_shooter(shooter_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(5));
   EXPECT_EQ(nullptr, superstructure_output_fetcher_.get());
@@ -1554,7 +1573,8 @@
     goal_builder.add_indexer(indexer_offset);
     goal_builder.add_shooter(shooter_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(5));
@@ -1656,7 +1676,8 @@
     goal_builder.add_indexer(indexer_offset);
     goal_builder.add_shooter(shooter_offset);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(5));
diff --git a/y2017/control_loops/superstructure/vision_time_adjuster_test.cc b/y2017/control_loops/superstructure/vision_time_adjuster_test.cc
index d7a5fb4..49e4460 100644
--- a/y2017/control_loops/superstructure/vision_time_adjuster_test.cc
+++ b/y2017/control_loops/superstructure/vision_time_adjuster_test.cc
@@ -19,8 +19,7 @@
       : ::testing::Test(),
         configuration_(aos::configuration::ReadConfig("y2017/config.json")),
         event_loop_factory_(&configuration_.message()),
-        simulation_event_loop_(
-            event_loop_factory_.MakeEventLoop("drivetrain")),
+        simulation_event_loop_(event_loop_factory_.MakeEventLoop("drivetrain")),
         drivetrain_status_sender_(
             simulation_event_loop_
                 ->MakeSender<::frc971::control_loops::drivetrain::Status>(
@@ -99,7 +98,8 @@
     status_builder.add_estimated_left_position(drivetrain_left_);
     status_builder.add_estimated_right_position(drivetrain_right_);
 
-    ASSERT_TRUE(builder.Send(status_builder.Finish()));
+    ASSERT_EQ(builder.Send(status_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   void SendVisionTarget() {
@@ -118,7 +118,8 @@
                                     drivetrain_history_[0]);
     vision_status_builder.add_image_valid(true);
 
-    ASSERT_TRUE(builder.Send(vision_status_builder.Finish()));
+    ASSERT_EQ(builder.Send(vision_status_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   double GetDriveTrainAngle() const {
diff --git a/y2017/joystick_reader.cc b/y2017/joystick_reader.cc
index 13b8720..cb21d3e 100644
--- a/y2017/joystick_reader.cc
+++ b/y2017/joystick_reader.cc
@@ -292,7 +292,8 @@
     goal_builder.add_hood(hood_goal_offset);
     goal_builder.add_shooter(shooter_goal_offset);
 
-    if (!builder.Send(goal_builder.Finish())) {
+    if (builder.Send(goal_builder.Finish()) !=
+        aos::RawSender::Error::kOk) {
       AOS_LOG(ERROR, "Sending superstructure goal failed.\n");
     }
   }
diff --git a/y2017/vision/target_receiver.cc b/y2017/vision/target_receiver.cc
index 84d3428..ba09425 100644
--- a/y2017/vision/target_receiver.cc
+++ b/y2017/vision/target_receiver.cc
@@ -48,7 +48,7 @@
         builder.MakeBuilder<VisionStatus>();
     vision_status_builder.add_image_valid(target.has_target());
     if (target.has_target()) {
-      vision_status_builder.add_target_time (
+      vision_status_builder.add_target_time(
           std::chrono::duration_cast<std::chrono::nanoseconds>(
               target_time.time_since_epoch())
               .count());
@@ -57,13 +57,14 @@
       double angle = 0.0;
       finder.GetAngleDist(
           aos::vision::Vector<2>(target.target().x(), target.target().y()),
-          /* TODO: Insert down estimate here in radians: */ 0.0,
-          &distance, &angle);
+          /* TODO: Insert down estimate here in radians: */ 0.0, &distance,
+          &angle);
       vision_status_builder.add_distance(distance);
       vision_status_builder.add_angle(angle);
     }
 
-    if (!builder.Send(vision_status_builder.Finish())) {
+    if (builder.Send(vision_status_builder.Finish()) !=
+        aos::RawSender::Error::kOk) {
       AOS_LOG(ERROR, "Failed to send vision information\n");
     }
   }
diff --git a/y2017/wpilib_interface.cc b/y2017/wpilib_interface.cc
index 04e19b6..6a4596e 100644
--- a/y2017/wpilib_interface.cc
+++ b/y2017/wpilib_interface.cc
@@ -222,7 +222,7 @@
       position_builder.add_left_speed(
           drivetrain_velocity_translate(drivetrain_left_encoder_->GetPeriod()));
 
-      builder.Send(position_builder.Finish());
+      builder.CheckOk(builder.Send(position_builder.Finish()));
     }
   }
 
@@ -278,7 +278,7 @@
                             Values::kShooterEncoderCountsPerRevolution,
                             Values::kShooterEncoderRatio));
 
-      builder.Send(position_builder.Finish());
+      builder.CheckOk(builder.Send(position_builder.Finish()));
     }
 
     {
@@ -293,7 +293,7 @@
         }
       }
       auto_builder.add_mode(mode);
-      builder.Send(auto_builder.Finish());
+      builder.CheckOk(builder.Send(auto_builder.Finish()));
     }
   }