Integrate the I/O Module

Bug: 157498737
Test: m -j
Change-Id: I94a303e358301c9aab956ebcdcc85235b73ff6a1
diff --git a/surround_view/service-impl/SurroundView3dSession.cpp b/surround_view/service-impl/SurroundView3dSession.cpp
index 4b11b3b..b3f8d4e 100644
--- a/surround_view/service-impl/SurroundView3dSession.cpp
+++ b/surround_view/service-impl/SurroundView3dSession.cpp
@@ -255,11 +255,13 @@
 
 SurroundView3dSession::SurroundView3dSession(sp<IEvsEnumerator> pEvs,
                                              VhalHandler* vhalHandler,
-                                             AnimationModule* animationModule) :
+                                             AnimationModule* animationModule,
+                                             IOModuleConfig* pConfig) :
       mEvs(pEvs),
       mStreamState(STOPPED),
       mVhalHandler(vhalHandler),
-      mAnimationModule(animationModule) {
+      mAnimationModule(animationModule),
+      mIOModuleConfig(pConfig) {
     mEvsCameraIds = {"0" , "1", "2", "3"};
 }
 
@@ -704,13 +706,14 @@
     mSurroundView = unique_ptr<SurroundView>(Create());
 
     SurroundViewStaticDataParams params =
-        SurroundViewStaticDataParams(mCameraParams,
-                                     Get2dParams(),
-                                     Get3dParams(),
-                                     GetUndistortionScales(),
-                                     GetBoundingBox(),
-                                     map<string, CarTexture>(),
-                                     map<string, CarPart>());
+            SurroundViewStaticDataParams(
+                    mCameraParams,
+                    mIOModuleConfig->sv2dConfig.sv2dParams,
+                    mIOModuleConfig->sv3dConfig.sv3dParams,
+                    GetUndistortionScales(),
+                    mIOModuleConfig->sv2dConfig.carBoundingBox,
+                    mIOModuleConfig->carModelConfig.carModel.texturesMap,
+                    mIOModuleConfig->carModelConfig.carModel.partsMap);
     mSurroundView->SetStaticData(params);
 
     mInputPointers.resize(4);
@@ -727,8 +730,8 @@
     }
     LOG(INFO) << "Allocated 4 input pointers";
 
-    mOutputWidth = Get3dParams().resolution.width;
-    mOutputHeight = Get3dParams().resolution.height;
+    mOutputWidth = mIOModuleConfig->sv3dConfig.sv3dParams.resolution.width;
+    mOutputHeight = mIOModuleConfig->sv3dConfig.sv3dParams.resolution.height;
 
     mConfig.width = mOutputWidth;
     mConfig.height = mOutputHeight;
@@ -765,15 +768,17 @@
 }
 
 bool SurroundView3dSession::setupEvs() {
+    // Reads the camera related information from the config object
+    const string evsGroupId = mIOModuleConfig->cameraConfig.evsGroupId;
+
     // Setup for EVS
-    // TODO(b/157498737): We are using hard-coded camera "group0" here. It
-    // should be read from configuration file once I/O module is ready.
     LOG(INFO) << "Requesting camera list";
-    mEvs->getCameraList_1_1([this] (hidl_vec<CameraDesc> cameraList) {
+    mEvs->getCameraList_1_1(
+            [this, evsGroupId] (hidl_vec<CameraDesc> cameraList) {
         LOG(INFO) << "Camera list callback received " << cameraList.size();
         for (auto&& cam : cameraList) {
             LOG(INFO) << "Found camera " << cam.v1.cameraId;
-            if (cam.v1.cameraId == "group0") {
+            if (cam.v1.cameraId == evsGroupId) {
                 mCameraDesc = cam;
             }
         }
@@ -835,12 +840,8 @@
         LOG(INFO) << "Camera " << camId << " is opened successfully";
     }
 
-    // TODO(b/156101189): camera position information is needed from the
-    // I/O module.
-    vector<string> cameraIds = getPhysicalCameraIds(mCamera);
     map<string, AndroidCameraParams> cameraIdToAndroidParameters;
-
-    for (auto& id : cameraIds) {
+    for (const auto& id : mIOModuleConfig->cameraConfig.evsCameraIds) {
         AndroidCameraParams params;
         if (getAndroidCameraParams(mCamera, id, params)) {
             cameraIdToAndroidParameters.emplace(id, params);