Convert ping/pong examples to new flatbuffer API

This serves as a demonstration of how to use the new API.

Change-Id: Icfd5c0f77eae456001416a6deb02cb2946d40070
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/BUILD b/aos/events/BUILD
index d18f621..de380dc 100644
--- a/aos/events/BUILD
+++ b/aos/events/BUILD
@@ -33,11 +33,9 @@
     target = ":event_loop_fbs_reflection_out",
 )
 
-flatbuffer_cc_library(
+static_flatbuffer(
     name = "ping_fbs",
-    srcs = ["ping.fbs"],
-    gen_reflections = 1,
-    target_compatible_with = ["@platforms//os:linux"],
+    src = "ping.fbs",
 )
 
 flatbuffer_ts_library(
@@ -64,11 +62,9 @@
     }),
 )
 
-flatbuffer_cc_library(
+static_flatbuffer(
     name = "pong_fbs",
-    srcs = ["pong.fbs"],
-    gen_reflections = 1,
-    target_compatible_with = ["@platforms//os:linux"],
+    src = "pong.fbs",
 )
 
 cc_library(
diff --git a/aos/events/ping_lib.cc b/aos/events/ping_lib.cc
index 56dde2f..23de0db 100644
--- a/aos/events/ping_lib.cc
+++ b/aos/events/ping_lib.cc
@@ -3,8 +3,8 @@
 #include "gflags/gflags.h"
 #include "glog/logging.h"
 
-#include "aos/events/ping_generated.h"
-#include "aos/events/pong_generated.h"
+#include "aos/events/ping_static.h"
+#include "aos/events/pong_static.h"
 #include "aos/json_to_flatbuffer.h"
 
 DEFINE_int32(sleep_us, 10000, "Time to sleep between pings");
@@ -15,7 +15,7 @@
 
 Ping::Ping(EventLoop *event_loop, std::string_view channel_name)
     : event_loop_(event_loop),
-      sender_(event_loop_->MakeSender<examples::Ping>(channel_name)) {
+      sender_(event_loop_->MakeSender<examples::PingStatic>(channel_name)) {
   timer_handle_ = event_loop_->AddTimer([this]() { SendPing(); });
   timer_handle_->set_name("ping");
 
@@ -38,12 +38,12 @@
                  << FLAGS_sleep_us << "us.";
   }
   ++count_;
-  aos::Sender<examples::Ping>::Builder builder = sender_.MakeBuilder();
-  examples::Ping::Builder ping_builder = builder.MakeBuilder<examples::Ping>();
-  ping_builder.add_value(count_);
-  ping_builder.add_send_time(
-      event_loop_->monotonic_now().time_since_epoch().count());
-  builder.CheckOk(builder.Send(ping_builder.Finish()));
+  aos::Sender<examples::PingStatic>::StaticBuilder builder =
+      sender_.MakeStaticBuilder();
+  examples::PingStatic *ping = builder.get();
+  ping->set_value(count_);
+  ping->set_send_time(event_loop_->monotonic_now().time_since_epoch().count());
+  builder.CheckOk(builder.Send());
   VLOG(2) << "Sending ping";
 }
 
diff --git a/aos/events/ping_lib.h b/aos/events/ping_lib.h
index fec6c45..aa40d6b 100644
--- a/aos/events/ping_lib.h
+++ b/aos/events/ping_lib.h
@@ -5,8 +5,8 @@
 #include <string_view>
 
 #include "aos/events/event_loop.h"
-#include "aos/events/ping_generated.h"
-#include "aos/events/pong_generated.h"
+#include "aos/events/ping_static.h"
+#include "aos/events/pong_static.h"
 
 namespace aos {
 
@@ -25,7 +25,7 @@
   void HandlePong(const examples::Pong &pong);
 
   aos::EventLoop *event_loop_;
-  aos::Sender<examples::Ping> sender_;
+  aos::Sender<examples::PingStatic> sender_;
   // Timer handle which sends the Ping message.
   aos::TimerHandler *timer_handle_;
   // Number of pings sent.
diff --git a/aos/events/pong_lib.cc b/aos/events/pong_lib.cc
index e8bf171..7fb07c2 100644
--- a/aos/events/pong_lib.cc
+++ b/aos/events/pong_lib.cc
@@ -3,8 +3,8 @@
 #include "glog/logging.h"
 
 #include "aos/events/event_loop.h"
-#include "aos/events/ping_generated.h"
-#include "aos/events/pong_generated.h"
+#include "aos/events/ping_static.h"
+#include "aos/events/pong_static.h"
 
 DEFINE_bool(fetch, false, "Poll & fetch messages instead of using a watcher.");
 DEFINE_uint32(fetch_period_ms, 10, "Frequency at which to fetch.");
@@ -14,7 +14,7 @@
 Pong::Pong(EventLoop *event_loop)
     : event_loop_(event_loop),
       fetcher_(event_loop_->MakeFetcher<examples::Ping>("/test")),
-      sender_(event_loop_->MakeSender<examples::Pong>("/test")) {
+      sender_(event_loop_->MakeSender<examples::PongStatic>("/test")) {
   if (FLAGS_fetch) {
     event_loop_
         ->AddPhasedLoop(
@@ -40,11 +40,12 @@
   }
   last_value_ = ping.value();
   last_send_time_ = ping.send_time();
-  aos::Sender<examples::Pong>::Builder builder = sender_.MakeBuilder();
-  examples::Pong::Builder pong_builder = builder.MakeBuilder<examples::Pong>();
-  pong_builder.add_value(ping.value());
-  pong_builder.add_initial_send_time(ping.send_time());
-  builder.CheckOk(builder.Send(pong_builder.Finish()));
+  aos::Sender<examples::PongStatic>::StaticBuilder builder =
+      sender_.MakeStaticBuilder();
+  examples::PongStatic *pong = builder.get();
+  pong->set_value(ping.value());
+  pong->set_initial_send_time(ping.send_time());
+  builder.CheckOk(builder.Send());
 }
 
 }  // namespace aos
diff --git a/aos/events/pong_lib.h b/aos/events/pong_lib.h
index a12dad0..17e5d35 100644
--- a/aos/events/pong_lib.h
+++ b/aos/events/pong_lib.h
@@ -2,8 +2,8 @@
 #define AOS_EVENTS_PONG_LIB_H_
 
 #include "aos/events/event_loop.h"
-#include "aos/events/ping_generated.h"
-#include "aos/events/pong_generated.h"
+#include "aos/events/ping_static.h"
+#include "aos/events/pong_static.h"
 
 namespace aos {
 
@@ -18,7 +18,7 @@
   void HandlePing(const examples::Ping &ping);
   EventLoop *event_loop_;
   aos::Fetcher<examples::Ping> fetcher_;
-  aos::Sender<examples::Pong> sender_;
+  aos::Sender<examples::PongStatic> sender_;
   int32_t last_value_ = 0;
   int32_t last_send_time_ = 0;