Make 2023 camera start first try

We had an order of operations problem with some of the pin
configuration.  Fix that and set an exposure + gain as well.

Change-Id: Ic2447b28656f9fa3bee3762ad752d86c17836e2a
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/y2023/vision/camera_reader.cc b/y2023/vision/camera_reader.cc
index 7004225..5105e86 100644
--- a/y2023/vision/camera_reader.cc
+++ b/y2023/vision/camera_reader.cc
@@ -23,31 +23,20 @@
 
   media_device->Reset();
 
-  media_device->Enable(
-      media_device->FindLink("ov5647 4-0036", 0, "rkisp1_csi", 0));
-  media_device->Enable(
-      media_device->FindLink("rkisp1_csi", 1, "rkisp1_isp", 0));
-  media_device->Enable(
-      media_device->FindLink("rkisp1_isp", 2, "rkisp1_resizer_selfpath", 0));
-  media_device->Enable(
-      media_device->FindLink("rkisp1_isp", 2, "rkisp1_resizer_mainpath", 0));
-
-  media_device->FindEntity("ov5647 4-0036")
-      ->pads()[0]
-      ->SetSubdevFormat(1296, 972, MEDIA_BUS_FMT_SBGGR10_1X10);
+  Entity *ov5647 = media_device->FindEntity("ov5647 4-0036");
+  ov5647->pads()[0]->SetSubdevFormat(1296, 972, MEDIA_BUS_FMT_SBGGR10_1X10);
 
   Entity *rkisp1_csi = media_device->FindEntity("rkisp1_csi");
   rkisp1_csi->pads()[0]->SetSubdevFormat(1296, 972, MEDIA_BUS_FMT_SBGGR10_1X10);
   rkisp1_csi->pads()[1]->SetSubdevFormat(1296, 972, MEDIA_BUS_FMT_SBGGR10_1X10);
 
   // TODO(austin): Should we set this on the link?
-  // TODO(austin): Need to update crop too.
   Entity *rkisp1_isp = media_device->FindEntity("rkisp1_isp");
-  rkisp1_isp->pads(0)->SetSubdevCrop(1296, 972);
   rkisp1_isp->pads(0)->SetSubdevFormat(1296, 972, MEDIA_BUS_FMT_SBGGR10_1X10);
+  rkisp1_isp->pads(0)->SetSubdevCrop(1296, 972);
 
-  rkisp1_isp->pads(2)->SetSubdevCrop(1296, 972);
   rkisp1_isp->pads(2)->SetSubdevFormat(1296, 972, MEDIA_BUS_FMT_YUYV8_2X8);
+  rkisp1_isp->pads(2)->SetSubdevCrop(1296, 972);
 
   Entity *rkisp1_resizer_selfpath =
       media_device->FindEntity("rkisp1_resizer_selfpath");
@@ -61,9 +50,10 @@
       media_device->FindEntity("rkisp1_resizer_mainpath");
   rkisp1_resizer_mainpath->pads(0)->SetSubdevFormat(1296, 972,
                                                     MEDIA_BUS_FMT_YUYV8_2X8);
+  rkisp1_resizer_mainpath->pads(0)->SetSubdevCrop(1296, 972);
+
   rkisp1_resizer_mainpath->pads(1)->SetSubdevFormat(1296 / 2, 972 / 2,
                                                     MEDIA_BUS_FMT_YUYV8_2X8);
-  rkisp1_resizer_mainpath->pads(0)->SetSubdevCrop(1296 / 2, 972 / 2);
 
   Entity *rkisp1_mainpath = media_device->FindEntity("rkisp1_mainpath");
   rkisp1_mainpath->SetFormat(1296 / 2, 972 / 2, V4L2_PIX_FMT_YUV422P);
@@ -71,6 +61,15 @@
   Entity *rkisp1_selfpath = media_device->FindEntity("rkisp1_selfpath");
   rkisp1_selfpath->SetFormat(1296, 972, V4L2_PIX_FMT_YUYV);
 
+  media_device->Enable(
+      media_device->FindLink("ov5647 4-0036", 0, "rkisp1_csi", 0));
+  media_device->Enable(
+      media_device->FindLink("rkisp1_csi", 1, "rkisp1_isp", 0));
+  media_device->Enable(
+      media_device->FindLink("rkisp1_isp", 2, "rkisp1_resizer_selfpath", 0));
+  media_device->Enable(
+      media_device->FindLink("rkisp1_isp", 2, "rkisp1_resizer_mainpath", 0));
+
   aos::FlatbufferDetachedBuffer<aos::Configuration> config =
       aos::configuration::ReadConfig(FLAGS_config);
 
@@ -79,23 +78,12 @@
   event_loop.SetRuntimeRealtimePriority(55);
   event_loop.SetRuntimeAffinity(aos::MakeCpusetFromCpus({2}));
 
-  RockchipV4L2Reader v4l2_reader(&event_loop, event_loop.epoll(),
-                                 rkisp1_selfpath->device());
 
-  // TODO(austin): Figure out exposure and stuff.
-  /*
-  const uint32_t exposure =
-      (FLAGS_use_outdoors ? FLAGS_outdoors_exposure : FLAGS_exposure);
-  if (exposure > 0) {
-    LOG(INFO) << "Setting camera to Manual Exposure mode with exposure = "
-              << exposure << " or " << static_cast<double>(exposure) / 10.0
-              << " ms";
-    v4l2_reader.SetExposure(exposure);
-  } else {
-    LOG(INFO) << "Setting camera to use Auto Exposure";
-    v4l2_reader.UseAutoExposure();
-  }
-  */
+  RockchipV4L2Reader v4l2_reader(&event_loop, event_loop.epoll(),
+                                 rkisp1_selfpath->device(), ov5647->device());
+
+  v4l2_reader.SetGain(1000);
+  v4l2_reader.SetExposure(1000);
 
   event_loop.Run();
 }