Set camera exposure from params when initialized

Change-Id: I01963885fba5819160cf45cc2a79e5329de542ce
diff --git a/aos/vision/image/image_stream.h b/aos/vision/image/image_stream.h
index 8aab97d..5d88d32 100644
--- a/aos/vision/image/image_stream.h
+++ b/aos/vision/image/image_stream.h
@@ -37,10 +37,7 @@
 
   void ReadEvent() override { reader_->HandleFrame(); }
 
-  bool SetExposure(int abs_exp) {
-    return reader_->SetCameraControl(V4L2_CID_EXPOSURE_ABSOLUTE,
-                                     "V4L2_CID_EXPOSURE_ABSOLUTE", abs_exp);
-  }
+  bool SetExposure(int abs_exp) { return reader_->SetExposure(abs_exp); }
 
  private:
   void ProcessHelper(DataRef data, aos::monotonic_clock::time_point timestamp);
diff --git a/aos/vision/image/reader.cc b/aos/vision/image/reader.cc
index 23b58c2..991339b 100644
--- a/aos/vision/image/reader.cc
+++ b/aos/vision/image/reader.cc
@@ -56,6 +56,8 @@
   Init();
 
   InitMMap();
+
+  SetExposure(params.exposure());
   LOG(INFO, "Bat Vision Successfully Initialized.\n");
 }
 
@@ -168,6 +170,11 @@
   return false;
 }
 
+bool Reader::SetExposure(int abs_exp) {
+  return SetCameraControl(V4L2_CID_EXPOSURE_ABSOLUTE,
+                          "V4L2_CID_EXPOSURE_ABSOLUTE", abs_exp);
+}
+
 void Reader::Init() {
   v4l2_capability cap;
   if (xioctl(fd_, VIDIOC_QUERYCAP, &cap) == -1) {
diff --git a/aos/vision/image/reader.h b/aos/vision/image/reader.h
index 25fc0bd..4283224 100644
--- a/aos/vision/image/reader.h
+++ b/aos/vision/image/reader.h
@@ -33,6 +33,7 @@
   int fd() { return fd_; }
 
   bool SetCameraControl(uint32_t id, const char *name, int value);
+  bool SetExposure(int abs_exp);
 
  private:
   void QueueBuffer(v4l2_buffer *buf);