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/y2014/actors/autonomous_actor.cc b/y2014/actors/autonomous_actor.cc
index a78ab4b..07c6855 100644
--- a/y2014/actors/autonomous_actor.cc
+++ b/y2014/actors/autonomous_actor.cc
@@ -53,7 +53,7 @@
   goal_builder.add_intake(intake_power);
   goal_builder.add_centering(centering_power);
 
-  if (!builder.Send(goal_builder.Finish())) {
+  if (builder.Send(goal_builder.Finish()) != aos::RawSender::Error::kOk) {
     AOS_LOG(WARNING, "sending claw goal failed\n");
   }
 }
@@ -66,7 +66,7 @@
   goal_builder.add_separation_angle(0.0);
   goal_builder.add_intake(12.0);
   goal_builder.add_centering(12.0);
-  if (!builder.Send(goal_builder.Finish())) {
+  if (builder.Send(goal_builder.Finish()) != aos::RawSender::Error::kOk) {
     AOS_LOG(WARNING, "sending claw goal failed\n");
   }
 }
@@ -81,7 +81,7 @@
   goal_builder.add_separation_angle(0.0);
   goal_builder.add_intake(4.0);
   goal_builder.add_centering(1.0);
-  if (!builder.Send(goal_builder.Finish())) {
+  if (builder.Send(goal_builder.Finish()) != aos::RawSender::Error::kOk) {
     AOS_LOG(WARNING, "sending claw goal failed\n");
   }
 }
@@ -94,7 +94,7 @@
   goal_builder.add_separation_angle(0.10);
   goal_builder.add_intake(4.0);
   goal_builder.add_centering(1.0);
-  if (!builder.Send(goal_builder.Finish())) {
+  if (builder.Send(goal_builder.Finish()) != aos::RawSender::Error::kOk) {
     AOS_LOG(WARNING, "sending claw goal failed\n");
   }
 }
@@ -108,7 +108,7 @@
   goal_builder.add_shot_requested(false);
   goal_builder.add_unload_requested(false);
   goal_builder.add_load_requested(false);
-  if (!builder.Send(goal_builder.Finish())) {
+  if (builder.Send(goal_builder.Finish()) != aos::RawSender::Error::kOk) {
     AOS_LOG(WARNING, "sending shooter goal failed\n");
   }
 }
diff --git a/y2014/actors/shoot_actor.cc b/y2014/actors/shoot_actor.cc
index 095a972..aad64e8 100644
--- a/y2014/actors/shoot_actor.cc
+++ b/y2014/actors/shoot_actor.cc
@@ -63,7 +63,8 @@
     claw_builder.add_intake(0.0);
     claw_builder.add_centering(0.0);
 
-    if (!builder.Send(claw_builder.Finish())) {
+    if (builder.Send(claw_builder.Finish()) !=
+        aos::RawSender::Error::kOk) {
       AOS_LOG(WARNING, "sending claw goal failed\n");
       return false;
     }
@@ -88,7 +89,8 @@
   shooter_builder.add_shot_requested(false);
   shooter_builder.add_unload_requested(false);
   shooter_builder.add_load_requested(false);
-  if (!builder.Send(shooter_builder.Finish())) {
+  if (builder.Send(shooter_builder.Finish()) !=
+      aos::RawSender::Error::kOk) {
     AOS_LOG(WARNING, "sending shooter goal failed\n");
     return false;
   }
@@ -122,7 +124,8 @@
     goal_builder.add_shot_requested(true);
     goal_builder.add_unload_requested(false);
     goal_builder.add_load_requested(false);
-    if (!builder.Send(goal_builder.Finish())) {
+    if (builder.Send(goal_builder.Finish()) !=
+        aos::RawSender::Error::kOk) {
       AOS_LOG(WARNING, "sending shooter goal failed\n");
       return;
     }
diff --git a/y2014/control_loops/claw/claw.cc b/y2014/control_loops/claw/claw.cc
index 4f0248c..4b76fd2 100644
--- a/y2014/control_loops/claw/claw.cc
+++ b/y2014/control_loops/claw/claw.cc
@@ -619,8 +619,9 @@
     if (::std::isnan(goal->bottom_angle()) ||
         ::std::isnan(goal->separation_angle()) ||
         ::std::isnan(goal->intake()) || ::std::isnan(goal->centering())) {
-      status->Send(Status::Pack(*status->fbb(), &status_struct));
-      output->Send(Output::Pack(*output->fbb(), &output_struct));
+      (void)status->Send(Status::Pack(*status->fbb(), &status_struct));
+      output->CheckOk(
+          output->Send(Output::Pack(*output->fbb(), &output_struct)));
       return;
     }
   }
@@ -977,7 +978,7 @@
       output_struct.bottom_claw_voltage = -kMaxVoltage;
     }
 
-    output->Send(Output::Pack(*output->fbb(), &output_struct));
+    output->CheckOk(output->Send(Output::Pack(*output->fbb(), &output_struct)));
   }
 
   status_struct.bottom = bottom_absolute_position();
@@ -1013,7 +1014,7 @@
        bottom_claw_.zeroing_state() ==
            ZeroedStateFeedbackLoop::DISABLED_CALIBRATION);
 
-  status->Send(Status::Pack(*status->fbb(), &status_struct));
+  (void)status->Send(Status::Pack(*status->fbb(), &status_struct));
 
   was_enabled_ = enabled;
 }
diff --git a/y2014/control_loops/claw/claw_lib_test.cc b/y2014/control_loops/claw/claw_lib_test.cc
index eb941a1..a714124 100644
--- a/y2014/control_loops/claw/claw_lib_test.cc
+++ b/y2014/control_loops/claw/claw_lib_test.cc
@@ -241,7 +241,8 @@
 
     // Only set calibration if it changed last cycle.  Calibration starts out
     // with a value of 0.
-    builder.Send(Position::Pack(*builder.fbb(), &position));
+    EXPECT_EQ(builder.Send(Position::Pack(*builder.fbb(), &position)),
+              aos::RawSender::Error::kOk);
     last_position_ = std::move(position);
   }
 
@@ -335,7 +336,8 @@
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_bottom_angle(::std::nan(""));
     goal_builder.add_separation_angle(::std::nan(""));
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   SetEnabled(true);
@@ -349,7 +351,8 @@
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_bottom_angle(0.1);
     goal_builder.add_separation_angle(0.2);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   SetEnabled(true);
@@ -446,7 +449,8 @@
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_bottom_angle(0.1);
     goal_builder.add_separation_angle(0.2);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   SetEnabled(true);
@@ -614,7 +618,8 @@
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_bottom_angle(0.1);
     goal_builder.add_separation_angle(0.2);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   TestWindup(ClawMotor::UNKNOWN_LOCATION,
@@ -631,7 +636,8 @@
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_bottom_angle(0.1);
     goal_builder.add_separation_angle(0.2);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   TestWindup(ClawMotor::UNKNOWN_LOCATION,
@@ -648,7 +654,8 @@
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_bottom_angle(0.1);
     goal_builder.add_separation_angle(0.2);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   TestWindup(ClawMotor::FINE_TUNE_BOTTOM,
diff --git a/y2014/control_loops/shooter/shooter.cc b/y2014/control_loops/shooter/shooter.cc
index 230a048..2a3e0d0 100644
--- a/y2014/control_loops/shooter/shooter.cc
+++ b/y2014/control_loops/shooter/shooter.cc
@@ -656,7 +656,7 @@
     output_struct.latch_piston = latch_piston_;
     output_struct.brake_piston = brake_piston_;
 
-    output->Send(Output::Pack(*output->fbb(), &output_struct));
+    output->CheckOk(output->Send(Output::Pack(*output->fbb(), &output_struct)));
   }
 
   if (position) {
@@ -676,7 +676,7 @@
 
   status_builder.add_shots(shot_count_);
 
-  status->Send(status_builder.Finish());
+  (void)status->Send(status_builder.Finish());
 }
 
 flatbuffers::Offset<Output> ShooterMotor::Zero(
diff --git a/y2014/control_loops/shooter/shooter_lib_test.cc b/y2014/control_loops/shooter/shooter_lib_test.cc
index d3217a6..f7dcf20 100644
--- a/y2014/control_loops/shooter/shooter_lib_test.cc
+++ b/y2014/control_loops/shooter/shooter_lib_test.cc
@@ -199,7 +199,8 @@
                      *last_position_message_.pusher_proximal.get(),
                      values.shooter.pusher_proximal, last_position_);
 
-    builder.Send(Position::Pack(*builder.fbb(), &position));
+    EXPECT_EQ(builder.Send(Position::Pack(*builder.fbb(), &position)),
+              aos::RawSender::Error::kOk);
 
     last_position_ = position.position;
     last_position_message_ = std::move(position);
@@ -403,7 +404,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(2));
 
@@ -422,7 +424,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::milliseconds(1200));
   EXPECT_EQ(ShooterMotor::STATE_READY, shooter_motor_.state());
@@ -431,7 +434,8 @@
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(35.0);
     goal_builder.add_shot_requested(true);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   bool hit_fire = false;
@@ -445,7 +449,8 @@
         Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
         goal_builder.add_shot_power(17.0);
         goal_builder.add_shot_requested(false);
-        EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+        EXPECT_EQ(builder.Send(goal_builder.Finish()),
+                  aos::RawSender::Error::kOk);
       }
       hit_fire = true;
     }
@@ -467,7 +472,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::milliseconds(1500));
 
@@ -477,7 +483,8 @@
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(0.0);
     goal_builder.add_shot_requested(true);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   bool hit_fire = false;
@@ -490,7 +497,8 @@
             shooter_goal_sender_.MakeBuilder();
         Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
         goal_builder.add_shot_requested(false);
-        EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+        EXPECT_EQ(builder.Send(goal_builder.Finish()),
+                  aos::RawSender::Error::kOk);
       }
       hit_fire = true;
     }
@@ -513,7 +521,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(500.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   while (test_event_loop_->monotonic_now() <
          monotonic_clock::time_point(chrono::milliseconds(1600))) {
@@ -531,7 +540,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::milliseconds(1500));
 
@@ -540,7 +550,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(14.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::milliseconds(500));
@@ -559,7 +570,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::milliseconds(1500));
   EXPECT_EQ(ShooterMotor::STATE_READY, shooter_motor_.state());
@@ -567,7 +579,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_unload_requested(true);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   while (test_event_loop_->monotonic_now() <
@@ -588,7 +601,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::milliseconds(1500));
 
@@ -601,7 +615,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_unload_requested(true);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   while (test_event_loop_->monotonic_now() <
@@ -622,7 +637,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::milliseconds(1500));
   EXPECT_EQ(ShooterMotor::STATE_READY, shooter_motor_.state());
@@ -630,7 +646,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_unload_requested(true);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   int kicked_delay = 20;
@@ -665,7 +682,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::milliseconds(1500));
   EXPECT_EQ(ShooterMotor::STATE_READY, shooter_motor_.state());
@@ -673,7 +691,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_unload_requested(true);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
 
   int kicked_delay = 20;
@@ -713,7 +732,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(2));
   // EXPECT_NEAR(0.0, shooter_motor_.GetPosition(), 0.01);
@@ -734,7 +754,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(70.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(3));
   // EXPECT_NEAR(0.0, shooter_motor_.GetPosition(), 0.01);
@@ -765,7 +786,8 @@
     ::aos::Sender<Goal>::Builder builder = shooter_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
     goal_builder.add_shot_power(120.0);
-    EXPECT_TRUE(builder.Send(goal_builder.Finish()));
+    EXPECT_EQ(builder.Send(goal_builder.Finish()),
+              aos::RawSender::Error::kOk);
   }
   while (test_event_loop_->monotonic_now() <
          monotonic_clock::time_point(chrono::seconds(2))) {
diff --git a/y2014/hot_goal_reader.cc b/y2014/hot_goal_reader.cc
index 5972a92..71380f4 100644
--- a/y2014/hot_goal_reader.cc
+++ b/y2014/hot_goal_reader.cc
@@ -89,7 +89,7 @@
               builder.MakeBuilder<y2014::HotGoal>();
           hot_goal_builder.add_left_count(left_count);
           hot_goal_builder.add_right_count(right_count);
-          builder.Send(hot_goal_builder.Finish());
+          (void)builder.Send(hot_goal_builder.Finish());
         } break;
         case 0:
           AOS_LOG(WARNING, "read on %d timed out\n", connection);
diff --git a/y2014/joystick_reader.cc b/y2014/joystick_reader.cc
index d1569d7..fc78994 100644
--- a/y2014/joystick_reader.cc
+++ b/y2014/joystick_reader.cc
@@ -393,7 +393,8 @@
                      : (data.IsPressed(kRollersOut) ? -12.0 : intake_power_));
         goal_builder.add_centering(intaking ? 12.0 : 0.0);
 
-        if (!builder.Send(goal_builder.Finish())) {
+        if (builder.Send(goal_builder.Finish()) !=
+            aos::RawSender::Error::kOk) {
           AOS_LOG(WARNING, "sending claw goal failed\n");
         }
       }
@@ -406,7 +407,8 @@
         goal_builder.add_shot_requested(data.IsPressed(kFire));
         goal_builder.add_unload_requested(data.IsPressed(kUnload));
         goal_builder.add_load_requested(data.IsPressed(kReload));
-        if (!builder.Send(goal_builder.Finish())) {
+        if (builder.Send(goal_builder.Finish()) !=
+            aos::RawSender::Error::kOk) {
           AOS_LOG(WARNING, "sending shooter goal failed\n");
         }
       }
diff --git a/y2014/wpilib_interface.cc b/y2014/wpilib_interface.cc
index 3e34064..9f8e2ce 100644
--- a/y2014/wpilib_interface.cc
+++ b/y2014/wpilib_interface.cc
@@ -271,7 +271,7 @@
       position_builder.add_right_shifter_position(
           hall_translate(values.right_drive, low_right_hall, high_right_hall));
 
-      builder.Send(position_builder.Finish());
+      builder.CheckOk(builder.Send(position_builder.Finish()));
     }
 
     {
@@ -279,7 +279,7 @@
       y2014::sensors::AutoMode::Builder auto_builder =
           builder.MakeBuilder<y2014::sensors::AutoMode>();
       auto_builder.add_voltage(auto_selector_analog_->GetVoltage());
-      builder.Send(auto_builder.Finish());
+      builder.CheckOk(builder.Send(auto_builder.Finish()));
     }
   }
 
@@ -310,7 +310,7 @@
       position_builder.add_pusher_distal(pusher_distal_offset);
       position_builder.add_pusher_proximal(pusher_proximal_offset);
 
-      builder.Send(position_builder.Finish());
+      builder.CheckOk(builder.Send(position_builder.Finish()));
     }
 
     {
@@ -325,7 +325,7 @@
 
       position_builder.add_top(top_offset);
       position_builder.add_bottom(bottom_offset);
-      builder.Send(position_builder.Finish());
+      builder.CheckOk(builder.Send(position_builder.Finish()));
     }
   }
 
@@ -558,7 +558,7 @@
 
       pcm_->Flush();
       to_log_builder.add_read_solenoids(pcm_->GetAll());
-      builder.Send(to_log_builder.Finish());
+      (void)builder.Send(to_log_builder.Finish());
     }
   }