Camera3: Report the value of AE precapture trigger

Report the AE precapture trigger status control
ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER to metadata.

Bug: 14059883
Change-Id: Ib653ccffea0e47d4f13e7be562e49a283582e48f
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index be38802..0064b09 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -2017,6 +2017,7 @@
          case CAM_INTF_META_AWB_REGIONS:
          case CAM_INTF_META_AWB_STATE:
          case CAM_INTF_PARM_AWB_LOCK:
+         case CAM_INTF_META_PRECAPTURE_TRIGGER:
          case CAM_INTF_META_MODE: {
            ALOGV("%s: 3A metadata: %d, do not process", __func__, curr_entry);
            break;
@@ -2547,6 +2548,15 @@
             ALOGV("%s: urgent Metadata : ANDROID_CONTROL_SCENE_MODE", __func__);
             break;
         }
+        case CAM_INTF_META_PRECAPTURE_TRIGGER: {
+            uint8_t *precaptureTrigger =
+                (uint8_t *)POINTER_OF(CAM_INTF_META_PRECAPTURE_TRIGGER, metadata);
+            camMetadata.update(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
+                 precaptureTrigger, 1);
+            ALOGV("%s: urgent Metadata : ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER",
+                __func__);
+            break;
+        }
         default:
             ALOGV("%s: Normal Metadata %d, do not process",
               __func__, curr_entry);
diff --git a/camera/QCamera2/stack/common/cam_intf.h b/camera/QCamera2/stack/common/cam_intf.h
index 283ad89..78728d8 100644
--- a/camera/QCamera2/stack/common/cam_intf.h
+++ b/camera/QCamera2/stack/common/cam_intf.h
@@ -457,6 +457,7 @@
 
     /* HAL3 external control */
     INCLUDE(CAM_INTF_PARM_BESTSHOT_MODE,                uint8_t,                     1);
+    INCLUDE(CAM_INTF_META_PRECAPTURE_TRIGGER,           uint8_t,                     1);
     INCLUDE(CAM_INTF_PARM_REDEYE_REDUCTION,             int32_t,                     1);
     INCLUDE(CAM_INTF_PARM_EV,                       	int32_t,                     1);
     INCLUDE(CAM_INTF_PARM_EV_STEP,                  	cam_rational_type_t,         1);
diff --git a/camera/QCamera2/stack/common/cam_types.h b/camera/QCamera2/stack/common/cam_types.h
index e7d5834..84bccde 100644
--- a/camera/QCamera2/stack/common/cam_types.h
+++ b/camera/QCamera2/stack/common/cam_types.h
@@ -953,8 +953,12 @@
     CAM_INTF_META_STREAM_INFO,
     /* List of areas to use for metering */
     CAM_INTF_META_AEC_ROI,
-    /* Whether the HAL must trigger precapture metering.*/
+    /* Whether the HAL must trigger precapture metering. Used to sync trigger
+     * value and precapture ID */
     CAM_INTF_META_AEC_PRECAPTURE_TRIGGER,
+    /* Use to report back to the trigger value, triger is requested using
+     * CAM_INTF_META_AEC_PRECAPTURE_TRIGGER */
+    CAM_INTF_META_PRECAPTURE_TRIGGER,
     /* The ID sent with the latest CAMERA2_TRIGGER_PRECAPTURE_METERING call */
     CAM_INTF_META_AEC_PRECAPTURE_ID,
     /* Current state of AE algorithm */