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();
}