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/y2018/actors/autonomous_actor.h b/y2018/actors/autonomous_actor.h
index 014459a..67d9c84 100644
--- a/y2018/actors/autonomous_actor.h
+++ b/y2018/actors/autonomous_actor.h
@@ -105,7 +105,8 @@
     superstructure_builder.add_deploy_fork(deploy_fork_);
     superstructure_builder.add_trajectory_override(false);
 
-    if (!builder.Send(superstructure_builder.Finish())) {
+    if (builder.Send(superstructure_builder.Finish()) !=
+        aos::RawSender::Error::kOk) {
       AOS_LOG(ERROR, "Sending superstructure goal failed.\n");
     }
   }
diff --git a/y2018/control_loops/superstructure/superstructure.cc b/y2018/control_loops/superstructure/superstructure.cc
index 7d12fd5..fc08280 100644
--- a/y2018/control_loops/superstructure/superstructure.cc
+++ b/y2018/control_loops/superstructure/superstructure.cc
@@ -329,10 +329,10 @@
     output_builder.add_forks_release(forks_release_output);
     output_builder.add_voltage_winch(voltage_winch_output);
 
-    output->Send(output_builder.Finish());
+    output->CheckOk(output->Send(output_builder.Finish()));
   }
 
-  status->Send(status_builder.Finish());
+  (void)status->Send(status_builder.Finish());
 }
 
 void Superstructure::SendColors(float red, float green, float blue) {
@@ -344,7 +344,8 @@
   status_light_builder.add_green(green);
   status_light_builder.add_blue(blue);
 
-  if (!builder.Send(status_light_builder.Finish())) {
+  if (builder.Send(status_light_builder.Finish()) !=
+      aos::RawSender::Error::kOk) {
     AOS_LOG(ERROR, "Failed to send lights.\n");
   }
 }
diff --git a/y2018/control_loops/superstructure/superstructure_lib_test.cc b/y2018/control_loops/superstructure/superstructure_lib_test.cc
index 9d2c10e..c52d8db 100644
--- a/y2018/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2018/control_loops/superstructure/superstructure_lib_test.cc
@@ -262,7 +262,8 @@
     position_builder.add_left_intake(left_intake_offset);
     position_builder.add_right_intake(right_intake_offset);
     position_builder.add_arm(arm_offset);
-    EXPECT_TRUE(builder.Send(position_builder.Finish()));
+    EXPECT_EQ(builder.Send(position_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   // Sets the difference between the commanded and applied powers.
@@ -409,7 +410,8 @@
     goal_builder.add_arm_goal_position(arm::UpIndex());
     goal_builder.add_open_claw(true);
 
-    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.
@@ -440,7 +442,8 @@
     goal_builder.add_arm_goal_position(arm::UpIndex());
     goal_builder.add_open_claw(true);
 
-    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.
@@ -469,7 +472,8 @@
     goal_builder.add_arm_goal_position(arm::UpIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
 
@@ -508,7 +512,8 @@
     goal_builder.add_arm_goal_position(arm::UpIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(10));
@@ -552,7 +557,8 @@
     goal_builder.add_arm_goal_position(arm::UpIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
   {
@@ -570,7 +576,8 @@
     goal_builder.add_arm_goal_position(arm::UpIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
   VerifyNearGoal();
@@ -598,7 +605,8 @@
     goal_builder.add_arm_goal_position(arm::UpIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
 
@@ -627,7 +635,8 @@
     goal_builder.add_arm_goal_position(arm::UpIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
 
@@ -675,7 +684,8 @@
     goal_builder.add_arm_goal_position(arm::FrontHighBoxIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   EXPECT_EQ(arm::Arm::State::RUNNING, superstructure_.arm().state());
@@ -699,7 +709,8 @@
     goal_builder.add_arm_goal_position(arm::FrontHighBoxIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(10));
@@ -721,7 +732,8 @@
     goal_builder.add_arm_goal_position(arm::ReadyAboveBoxIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(10));
@@ -748,7 +760,8 @@
     goal_builder.add_arm_goal_position(arm::BackLowBoxIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(10));
@@ -770,7 +783,8 @@
     goal_builder.add_arm_goal_position(arm::ReadyAboveBoxIndex());
     goal_builder.add_open_claw(true);
 
-    ASSERT_TRUE(builder.Send(goal_builder.Finish()));
+    ASSERT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(10));
diff --git a/y2018/joystick_reader.cc b/y2018/joystick_reader.cc
index 42620ff..3a5ed63 100644
--- a/y2018/joystick_reader.cc
+++ b/y2018/joystick_reader.cc
@@ -351,7 +351,8 @@
       superstructure_builder.add_open_claw(false);
     }
 
-    if (!builder.Send(superstructure_builder.Finish())) {
+    if (builder.Send(superstructure_builder.Finish()) !=
+        aos::RawSender::Error::kOk) {
       AOS_LOG(ERROR, "Sending superstructure goal failed.\n");
     }
 
diff --git a/y2018/vision/vision_status.cc b/y2018/vision/vision_status.cc
index 15daefc..ca11dd8 100644
--- a/y2018/vision/vision_status.cc
+++ b/y2018/vision/vision_status.cc
@@ -35,7 +35,8 @@
           builder.MakeBuilder<VisionStatus>();
       vision_status_builder.add_high_frame_count(status.high_frame_count());
       vision_status_builder.add_low_frame_count(status.low_frame_count());
-      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/y2018/wpilib_interface.cc b/y2018/wpilib_interface.cc
index ef4c058..4ee8031 100644
--- a/y2018/wpilib_interface.cc
+++ b/y2018/wpilib_interface.cc
@@ -293,7 +293,7 @@
           drivetrain_shifter_pot_translate(
               right_drivetrain_shifter_->GetVoltage()));
 
-      builder.Send(drivetrain_builder.Finish());
+      builder.CheckOk(builder.Send(drivetrain_builder.Finish()));
     }
   }
 
@@ -396,7 +396,7 @@
       superstructure_builder.add_box_distance(lidar_lite_.last_width() /
                                               0.00001 / 100.0 / 2);
 
-      builder.Send(superstructure_builder.Finish());
+      builder.CheckOk(builder.Send(superstructure_builder.Finish()));
     }
   }
 
@@ -516,7 +516,7 @@
 
       pcm_->Flush();
       to_log_builder.add_read_solenoids(pcm_->GetAll());
-      builder.Send(to_log_builder.Finish());
+      (void)builder.Send(to_log_builder.Finish());
     }
 
     monotonic_clock::time_point monotonic_now = event_loop_->monotonic_now();