camera: intel: Use token to replace mojo channel manager instance

We want to hide the detail of the camera mojo channel manager and camera
hal also doesn't need it. Use a token to decouple it.

BUG=b:173033342
TEST=emerge cros-camera-hal-intel-ipu3 cros-camera-hal-intel-ipu6
Pass camera.CCAUITakePicture.swa on nautilus and dedede.

Change-Id: I2fddddc692aa0906aac96c65535b775cd22e6e7e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2550966
Tested-by: Hsu Wei-Cheng <mojahsu@chromium.org>
Commit-Queue: Hsu Wei-Cheng <mojahsu@chromium.org>
Reviewed-by: Tianshu Qiu <tian.shu.qiu@intel.com>
Reviewed-by: Hung-yu Wu <hywu@chromium.org>
diff --git a/camera/hal/intel/ipu3/AAL/Camera3HAL.h b/camera/hal/intel/ipu3/AAL/Camera3HAL.h
index 65668ab..e14a8a4 100644
--- a/camera/hal/intel/ipu3/AAL/Camera3HAL.h
+++ b/camera/hal/intel/ipu3/AAL/Camera3HAL.h
@@ -17,7 +17,7 @@
 #ifndef _CAMERA3_HAL_H_
 #define _CAMERA3_HAL_H_
 
-#include <cros-camera/camera_mojo_channel_manager.h>
+#include <cros-camera/camera_mojo_channel_manager_token.h>
 #include <hardware/camera3.h>
 
 #include "CameraConf.h"
@@ -27,7 +27,7 @@
 namespace cros {
 namespace intel {
 
-extern CameraMojoChannelManager* g_mojo_manager;
+extern CameraMojoChannelManagerToken* g_mojo_manager_token;
 
 /**
  * \class Camera3HAL
diff --git a/camera/hal/intel/ipu3/Camera3HALModule.cpp b/camera/hal/intel/ipu3/Camera3HALModule.cpp
index 76449d6..2b19445 100644
--- a/camera/hal/intel/ipu3/Camera3HALModule.cpp
+++ b/camera/hal/intel/ipu3/Camera3HALModule.cpp
@@ -54,7 +54,7 @@
  */
 static std::mutex sCameraHalMutex;
 
-CameraMojoChannelManager* cros::intel::g_mojo_manager = nullptr;
+CameraMojoChannelManagerToken* cros::intel::g_mojo_manager_token = nullptr;
 
 int openCameraHardware(int id, const hw_module_t* module, hw_device_t** device)
 {
@@ -233,9 +233,9 @@
     return 0;
 }
 
-static void set_up(CameraMojoChannelManager* mojo_manager)
+static void set_up(CameraMojoChannelManagerToken* token)
 {
-    cros::intel::g_mojo_manager = mojo_manager;
+    cros::intel::g_mojo_manager_token = token;
 
     LogHelper::setDebugLevel();
     PerformanceTraces::reset();
@@ -251,7 +251,7 @@
 {
     PlatformData::deinit();
 
-    cros::intel::g_mojo_manager = nullptr;
+    cros::intel::g_mojo_manager_token = nullptr;
 }
 
 static struct hw_module_methods_t hal_module_methods = {
diff --git a/camera/hal/intel/ipu3/common/jpeg/ImgEncoder.cpp b/camera/hal/intel/ipu3/common/jpeg/ImgEncoder.cpp
index ef5084a..c7c4c26 100644
--- a/camera/hal/intel/ipu3/common/jpeg/ImgEncoder.cpp
+++ b/camera/hal/intel/ipu3/common/jpeg/ImgEncoder.cpp
@@ -28,7 +28,7 @@
 namespace intel {
 
 ImgEncoder::ImgEncoder(int cameraid) :
-    mJpegCompressor(cros::JpegCompressor::GetInstance(g_mojo_manager))
+    mJpegCompressor(cros::JpegCompressor::GetInstance(g_mojo_manager_token))
 {
     LOG1("@%s", __FUNCTION__);
 }
diff --git a/camera/hal/intel/ipu3/psl/ipu3/CaptureUnit.h b/camera/hal/intel/ipu3/psl/ipu3/CaptureUnit.h
index b0198ee..af24537 100644
--- a/camera/hal/intel/ipu3/psl/ipu3/CaptureUnit.h
+++ b/camera/hal/intel/ipu3/psl/ipu3/CaptureUnit.h
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+#include <queue>
 #include <utils/Errors.h>
 #include <vector>
 
diff --git a/camera/hal/intel/ipu3/psl/ipu3/ipc/client/Intel3AClient.cpp b/camera/hal/intel/ipu3/psl/ipu3/ipc/client/Intel3AClient.cpp
index 0c54ef5..ddb7c76 100644
--- a/camera/hal/intel/ipu3/psl/ipu3/ipc/client/Intel3AClient.cpp
+++ b/camera/hal/intel/ipu3/psl/ipu3/ipc/client/Intel3AClient.cpp
@@ -41,7 +41,7 @@
     Intel3AClient::notify = notifyCallback;
 
     mBridge = cros::CameraAlgorithmBridge::CreateInstance(
-        cros::CameraAlgorithmBackend::kVendorCpu, g_mojo_manager);
+        cros::CameraAlgorithmBackend::kVendorCpu, g_mojo_manager_token);
     CheckError(!mBridge, VOID_VALUE, "@%s, mBridge is nullptr", __FUNCTION__);
     CheckError((mBridge->Initialize(this) != 0), VOID_VALUE, "@%s, call mBridge->Initialize fail", __FUNCTION__);
 
diff --git a/camera/hal/intel/ipu6/aal/Camera3HALModule.cpp b/camera/hal/intel/ipu6/aal/Camera3HALModule.cpp
index a004e46..4c1627c 100644
--- a/camera/hal/intel/ipu6/aal/Camera3HALModule.cpp
+++ b/camera/hal/intel/ipu6/aal/Camera3HALModule.cpp
@@ -246,15 +246,15 @@
  *  4. get_number_of_cameras()
  *  ......
  */
-static void hal_set_up(cros::CameraMojoChannelManager* mojoManager) {
+static void hal_set_up(cros::CameraMojoChannelManagerToken* token) {
     LOG1("@%s", __func__);
 
     icamera::Log::setDebugLevel();
     icamera::CameraDump::setDumpLevel();
 
 #ifdef ENABLE_SANDBOXING
-    // Create IntelAlgoClient and set the mojo manager
-    icamera::IntelAlgoClient::getInstance()->setMojoManager(mojoManager);
+    // Create IntelAlgoClient and set the mojo manager token
+    icamera::IntelAlgoClient::getInstance()->setMojoManagerToken(token);
 #endif
 }
 
diff --git a/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.cpp b/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.cpp
index 44c330f..7546a14 100644
--- a/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.cpp
+++ b/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.cpp
@@ -60,7 +60,7 @@
         : mErrCb(nullptr),
           mGpuBridge(nullptr),
           mIPCStatus(true),
-          mMojoManager(nullptr),
+          mMojoManagerToken(nullptr),
           mInitialized(false) {
     LOGIPC("@%s", __func__);
 }
@@ -70,8 +70,8 @@
 }
 
 int IntelAlgoClient::initialize() {
-    LOGIPC("@%s, mMojoManager: %p", __func__, mMojoManager);
-    CheckError(!mMojoManager, UNKNOWN_ERROR, "@%s, mMojoManager is nullptr", __func__);
+    LOGIPC("@%s, mMojoManagerToken: %p", __func__, mMojoManagerToken);
+    CheckError(!mMojoManagerToken, UNKNOWN_ERROR, "@%s, mMojoManagerToken is nullptr", __func__);
 
     mCallback = base::Bind(&IntelAlgoClient::callbackHandler, base::Unretained(this));
     IntelAlgoClient::return_callback = returnCallback;
@@ -80,14 +80,14 @@
     IntelAlgoClient::notify = notifyCallback;
 
     mBridge = cros::CameraAlgorithmBridge::CreateInstance(cros::CameraAlgorithmBackend::kVendorCpu,
-                                                          mMojoManager);
+                                                          mMojoManagerToken);
     CheckError(!mBridge, UNKNOWN_ERROR, "@%s, mBridge is nullptr", __func__);
     CheckError(mBridge->Initialize(this) != 0, UNKNOWN_ERROR, "@%s, mBridge init fails", __func__);
 
     if (PlatformData::isUsingGpuAlgo()) {
         LOGIPC("@%s GPU algo enabled", __func__);
         mGpuBridge = cros::CameraAlgorithmBridge::CreateInstance(
-            cros::CameraAlgorithmBackend::kVendorGpu, mMojoManager);
+            cros::CameraAlgorithmBackend::kVendorGpu, mMojoManagerToken);
         CheckError(!mGpuBridge, UNKNOWN_ERROR, "@%s, mGpuBridge is nullptr", __func__);
         CheckError(mGpuBridge->Initialize(this) != 0, UNKNOWN_ERROR, "@%s, mGpuBridge init fails",
                    __func__);
diff --git a/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.h b/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.h
index 2e4edac..7cfa6f2 100644
--- a/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.h
+++ b/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.h
@@ -47,7 +47,7 @@
     IntelAlgoClient();
     virtual ~IntelAlgoClient();
 
-    void setMojoManager(cros::CameraMojoChannelManager* manager) { mMojoManager = manager; }
+    void setMojoManagerToken(cros::CameraMojoChannelManagerToken* token) { mMojoManagerToken = token; }
 
     // Connect to the algo processes(cpu and gpu)
     // It must be called after all preparation are ready in camera service
@@ -106,7 +106,7 @@
     std::unordered_map<void*, int32_t> mShmMap[MAX_ALGO_SHM];
     std::mutex mShmMapMutex;  // the mutex for mShmMap
 
-    cros::CameraMojoChannelManager* mMojoManager;
+    cros::CameraMojoChannelManagerToken* mMojoManagerToken;
     bool mInitialized;
 
  private: