camera: update CameraModule

1. Add more accessor methods to CameraModule to prevent exposing
raw module pointer
2. Use KeyedVector to replace array

Bug: 19897963

Change-Id: I111cc093f09f5fb3c4b13693d5d0687e1f441058
diff --git a/services/camera/libcameraservice/common/CameraModule.h b/services/camera/libcameraservice/common/CameraModule.h
index 16207aa..ecc5b2d 100644
--- a/services/camera/libcameraservice/common/CameraModule.h
+++ b/services/camera/libcameraservice/common/CameraModule.h
@@ -20,10 +20,7 @@
 #include <hardware/camera.h>
 #include <camera/CameraMetadata.h>
 #include <utils/Mutex.h>
-
-/* This needs to be increased if we can have more cameras */
-#define MAX_CAMERAS_PER_MODULE 2
-
+#include <utils/KeyedVector.h>
 
 namespace android {
 /**
@@ -37,7 +34,6 @@
 public:
     CameraModule(camera_module_t *module);
 
-    const hw_module_t* getRawModule();
     int getCameraInfo(int cameraId, struct camera_info *info);
     int getNumberOfCameras(void);
     int open(const char* id, struct hw_device_t** device);
@@ -46,16 +42,25 @@
     bool isVendorTagDefined();
     void getVendorTagOps(vendor_tag_ops_t* ops);
     int setTorchMode(const char* camera_id, bool enable);
+    uint16_t getModuleApiVersion();
+    const char* getModuleName();
+    uint16_t getHalApiVersion();
+    const char* getModuleAuthor();
+    // Only used by CameraModuleFixture native test. Do NOT use elsewhere.
+    void *getDso();
 
 private:
     // Derive camera characteristics keys defined after HAL device version
     static void deriveCameraCharacteristicsKeys(uint32_t deviceVersion, CameraMetadata &chars);
     status_t filterOpenErrorCode(status_t err);
 
+    struct CameraInfo {
+        CameraMetadata cameraCharacteristics;
+        camera_info    cameraInfo;
+    };
+
     camera_module_t *mModule;
-    CameraMetadata mCameraCharacteristics[MAX_CAMERAS_PER_MODULE];
-    camera_info mCameraInfo[MAX_CAMERAS_PER_MODULE];
-    bool mCameraInfoCached[MAX_CAMERAS_PER_MODULE];
+    KeyedVector<int, CameraInfo> mCameraInfoMap;
     Mutex mCameraInfoLock;
 };