Camera: Add default camera provider 2.4

Supports legacy camera HAL modules; also exports ICameraDevice
instances.

Test: compile
Bug: 30985004
Change-Id: I2b9624a412de95dd43979a5e6650b170010c577a
diff --git a/camera/common/1.0/default/CameraModule.cpp b/camera/common/1.0/default/CameraModule.cpp
index d8a424e..5d9ae4d 100644
--- a/camera/common/1.0/default/CameraModule.cpp
+++ b/camera/common/1.0/default/CameraModule.cpp
@@ -344,7 +344,7 @@
     return res;
 }
 
-bool CameraModule::isOpenLegacyDefined() {
+bool CameraModule::isOpenLegacyDefined() const {
     if (getModuleApiVersion() < CAMERA_MODULE_API_VERSION_2_3) {
         return false;
     }
@@ -376,7 +376,7 @@
     return res;
 }
 
-bool CameraModule::isVendorTagDefined() {
+bool CameraModule::isVendorTagDefined() const {
     return mModule->get_vendor_tag_ops != NULL;
 }
 
@@ -388,11 +388,25 @@
     }
 }
 
+bool CameraModule::isSetTorchModeSupported() const {
+    if (getModuleApiVersion() >= CAMERA_MODULE_API_VERSION_2_4) {
+        if (mModule->set_torch_mode == NULL) {
+            ALOGE("%s: Module 2.4 device must support set torch API!",
+                    __FUNCTION__);
+            return false;
+        }
+        return true;
+    }
+    return false;
+}
+
 int CameraModule::setTorchMode(const char* camera_id, bool enable) {
-    int res;
-    ATRACE_BEGIN("camera_module->set_torch_mode");
-    res = mModule->set_torch_mode(camera_id, enable);
-    ATRACE_END();
+    int res = INVALID_OPERATION;
+    if (mModule->set_torch_mode != NULL) {
+        ATRACE_BEGIN("camera_module->set_torch_mode");
+        res = mModule->set_torch_mode(camera_id, enable);
+        ATRACE_END();
+    }
     return res;
 }
 
@@ -409,19 +423,19 @@
     return -ENODEV;
 }
 
-uint16_t CameraModule::getModuleApiVersion() {
+uint16_t CameraModule::getModuleApiVersion() const {
     return mModule->common.module_api_version;
 }
 
-const char* CameraModule::getModuleName() {
+const char* CameraModule::getModuleName() const {
     return mModule->common.name;
 }
 
-uint16_t CameraModule::getHalApiVersion() {
+uint16_t CameraModule::getHalApiVersion() const {
     return mModule->common.hal_api_version;
 }
 
-const char* CameraModule::getModuleAuthor() {
+const char* CameraModule::getModuleAuthor() const {
     return mModule->common.author;
 }