diff --git a/camera/aon/aidl/Android.bp b/camera/aon/aidl/Android.bp
new file mode 100644
index 0000000..bdb115f
--- /dev/null
+++ b/camera/aon/aidl/Android.bp
@@ -0,0 +1,25 @@
+aidl_interface {
+    name: "vendor.qti.hardware.camera.aon",
+    vendor_available: true,
+    owner: "qti",
+    srcs: ["vendor/qti/hardware/camera/aon/*.aidl"],
+    stability: "vintf",
+    backend: {
+        cpp: {
+            enabled: false,
+        },
+        java: {
+            sdk_version: "module_current",
+            enabled: true,
+        },
+        ndk: {
+            enabled: true,
+        },
+    },
+    versions_with_info: [
+        {
+            version: "1",
+            imports: [],
+        },
+    ],
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/.hash b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/.hash
new file mode 100644
index 0000000..ff4c18f
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/.hash
@@ -0,0 +1 @@
+5497b93a8c1e52d04628e3b5f44635ec408428c1
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONCallbackEvent.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONCallbackEvent.aidl
new file mode 100644
index 0000000..5d4ed9d
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONCallbackEvent.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable AONCallbackEvent {
+  vendor.qti.hardware.camera.aon.AONServiceType srvType;
+  vendor.qti.hardware.camera.aon.FDEvtInfo fdEvtInfo;
+  vendor.qti.hardware.camera.aon.FDProEvtInfo fdProEvtInfo;
+  vendor.qti.hardware.camera.aon.QREvtInfo qrEvtInfo;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONRegisterInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONRegisterInfo.aidl
new file mode 100644
index 0000000..90b73e6
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONRegisterInfo.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable AONRegisterInfo {
+  int aonIdx;
+  vendor.qti.hardware.camera.aon.AONServiceType srvType;
+  vendor.qti.hardware.camera.aon.FDRegisterInfo fdRegInfo;
+  vendor.qti.hardware.camera.aon.QRRegisterInfo qrRegInfo;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONSensorCap.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONSensorCap.aidl
new file mode 100644
index 0000000..332db63
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONSensorCap.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable AONSensorCap {
+  vendor.qti.hardware.camera.aon.AONServiceType srvType;
+  vendor.qti.hardware.camera.aon.FDAlgoMode[] fdAlgoModes;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONSensorInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONSensorInfo.aidl
new file mode 100644
index 0000000..57abf9e
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONSensorInfo.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable AONSensorInfo {
+  vendor.qti.hardware.camera.aon.PositionType position;
+  vendor.qti.hardware.camera.aon.AONSensorCap[] sensorCaps;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONServiceType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONServiceType.aidl
new file mode 100644
index 0000000..8f73840
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/AONServiceType.aidl
@@ -0,0 +1,31 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum AONServiceType {
+  FaceDetect = 0,
+  FaceDetectPro = 1,
+  QRCode = 2,
+  VendorDefinedStart = 0x1000000,
+  VendorDefinedEnd,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/DeliveryMode.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/DeliveryMode.aidl
new file mode 100644
index 0000000..fb84704
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/DeliveryMode.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum DeliveryMode {
+  MotionBased = 0,
+  TimeBased = 1,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDAlgoMode.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDAlgoMode.aidl
new file mode 100644
index 0000000..1bc4829
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDAlgoMode.aidl
@@ -0,0 +1,31 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FDAlgoMode {
+  int width;
+  int height;
+  boolean isIslandModeCapable;
+  vendor.qti.hardware.camera.aon.FDEngineType fdEngine;
+  int supportedFDEvtTypeMask;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDEngineType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDEngineType.aidl
new file mode 100644
index 0000000..9c240a9
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDEngineType.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum FDEngineType {
+  EngineCADL = 0,
+  EngineENPU = 1,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDEvtInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDEvtInfo.aidl
new file mode 100644
index 0000000..654b563
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDEvtInfo.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FDEvtInfo {
+  int fdEvtTypeMask;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDEvtType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDEvtType.aidl
new file mode 100644
index 0000000..32c85b2
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDEvtType.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum FDEvtType {
+  FaceDetected = 1,
+  FaceNotDetected = 2,
+  GazeDetected = 4,
+  GazeNotDetected = 8,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDProEvtInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDProEvtInfo.aidl
new file mode 100644
index 0000000..a62fcd4
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDProEvtInfo.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FDProEvtInfo {
+  int fdEvtTypeMask;
+  vendor.qti.hardware.camera.aon.FaceInfoPro faceInfo;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDRegisterInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDRegisterInfo.aidl
new file mode 100644
index 0000000..b7add05
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FDRegisterInfo.aidl
@@ -0,0 +1,31 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FDRegisterInfo {
+  int fdEvtTypeMask;
+  int fdAlgoModeIdx;
+  vendor.qti.hardware.camera.aon.DeliveryMode deliveryMode;
+  int deliveryPeriodMs;
+  int detectionPerDelivery;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FaceInfoPro.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FaceInfoPro.aidl
new file mode 100644
index 0000000..1b9d158
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FaceInfoPro.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FaceInfoPro {
+  int frameDimWidth;
+  int frameDimHeight;
+  vendor.qti.hardware.camera.aon.FaceInfoProPerFace[] perFace;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FaceInfoProPerFace.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FaceInfoProPerFace.aidl
new file mode 100644
index 0000000..30e1425
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FaceInfoProPerFace.aidl
@@ -0,0 +1,32 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FaceInfoProPerFace {
+  int angleRoll;
+  int angleYaw;
+  int width;
+  int height;
+  vendor.qti.hardware.camera.aon.FacePosType center;
+  boolean isGazeDetected;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FacePosType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FacePosType.aidl
new file mode 100644
index 0000000..2e75a12
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/FacePosType.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FacePosType {
+  int x;
+  int y;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/IAONService.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/IAONService.aidl
new file mode 100644
index 0000000..e6a5a29
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/IAONService.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+interface IAONService {
+  vendor.qti.hardware.camera.aon.AONSensorInfo[] GetAONSensorInfoList();
+  long RegisterClient(in vendor.qti.hardware.camera.aon.IAONServiceCallback callback, in vendor.qti.hardware.camera.aon.AONRegisterInfo regInfo);
+  vendor.qti.hardware.camera.aon.Status UnregisterClient(in long clientHandle);
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/IAONServiceCallback.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/IAONServiceCallback.aidl
new file mode 100644
index 0000000..e6a74be
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/IAONServiceCallback.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+interface IAONServiceCallback {
+  void NotifyAONCallbackEvent(in long clientHandle, in vendor.qti.hardware.camera.aon.AONCallbackEvent cbEvt);
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/PositionType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/PositionType.aidl
new file mode 100644
index 0000000..7bb83ef
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/PositionType.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum PositionType {
+  REAR = 0,
+  FRONT = 1,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/QREvtInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/QREvtInfo.aidl
new file mode 100644
index 0000000..f8d2435
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/QREvtInfo.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable QREvtInfo {
+  int qrEvtTypeMask;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/QREvtType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/QREvtType.aidl
new file mode 100644
index 0000000..5c5b9dd
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/QREvtType.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum QREvtType {
+  QRCodeDetected = 1,
+  QRCodeNotDetected = 2,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/QRRegisterInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/QRRegisterInfo.aidl
new file mode 100644
index 0000000..fbf6de7
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/QRRegisterInfo.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable QRRegisterInfo {
+  int qrEvtTypeMask;
+  vendor.qti.hardware.camera.aon.DeliveryMode deliveryMode;
+  int deliveryPeriodMs;
+  int detectionPerDelivery;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/Status.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/Status.aidl
new file mode 100644
index 0000000..2f795ed
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/1/vendor/qti/hardware/camera/aon/Status.aidl
@@ -0,0 +1,32 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum Status {
+  SUCCESS = 0,
+  FAILED = 1,
+  NOT_SUPPORTED = 2,
+  BAD_STATE = 3,
+  INVALID_CALLBACK_PTR = 4,
+  ABORT = 5,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONCallbackEvent.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONCallbackEvent.aidl
new file mode 100644
index 0000000..5d4ed9d
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONCallbackEvent.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable AONCallbackEvent {
+  vendor.qti.hardware.camera.aon.AONServiceType srvType;
+  vendor.qti.hardware.camera.aon.FDEvtInfo fdEvtInfo;
+  vendor.qti.hardware.camera.aon.FDProEvtInfo fdProEvtInfo;
+  vendor.qti.hardware.camera.aon.QREvtInfo qrEvtInfo;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONRegisterInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONRegisterInfo.aidl
new file mode 100644
index 0000000..90b73e6
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONRegisterInfo.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable AONRegisterInfo {
+  int aonIdx;
+  vendor.qti.hardware.camera.aon.AONServiceType srvType;
+  vendor.qti.hardware.camera.aon.FDRegisterInfo fdRegInfo;
+  vendor.qti.hardware.camera.aon.QRRegisterInfo qrRegInfo;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONSensorCap.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONSensorCap.aidl
new file mode 100644
index 0000000..332db63
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONSensorCap.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable AONSensorCap {
+  vendor.qti.hardware.camera.aon.AONServiceType srvType;
+  vendor.qti.hardware.camera.aon.FDAlgoMode[] fdAlgoModes;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONSensorInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONSensorInfo.aidl
new file mode 100644
index 0000000..57abf9e
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONSensorInfo.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable AONSensorInfo {
+  vendor.qti.hardware.camera.aon.PositionType position;
+  vendor.qti.hardware.camera.aon.AONSensorCap[] sensorCaps;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONServiceType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONServiceType.aidl
new file mode 100644
index 0000000..8f73840
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/AONServiceType.aidl
@@ -0,0 +1,31 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum AONServiceType {
+  FaceDetect = 0,
+  FaceDetectPro = 1,
+  QRCode = 2,
+  VendorDefinedStart = 0x1000000,
+  VendorDefinedEnd,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/DeliveryMode.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/DeliveryMode.aidl
new file mode 100644
index 0000000..fb84704
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/DeliveryMode.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum DeliveryMode {
+  MotionBased = 0,
+  TimeBased = 1,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDAlgoMode.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDAlgoMode.aidl
new file mode 100644
index 0000000..1bc4829
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDAlgoMode.aidl
@@ -0,0 +1,31 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FDAlgoMode {
+  int width;
+  int height;
+  boolean isIslandModeCapable;
+  vendor.qti.hardware.camera.aon.FDEngineType fdEngine;
+  int supportedFDEvtTypeMask;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDEngineType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDEngineType.aidl
new file mode 100644
index 0000000..9c240a9
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDEngineType.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum FDEngineType {
+  EngineCADL = 0,
+  EngineENPU = 1,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDEvtInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDEvtInfo.aidl
new file mode 100644
index 0000000..654b563
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDEvtInfo.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FDEvtInfo {
+  int fdEvtTypeMask;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDEvtType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDEvtType.aidl
new file mode 100644
index 0000000..32c85b2
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDEvtType.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum FDEvtType {
+  FaceDetected = 1,
+  FaceNotDetected = 2,
+  GazeDetected = 4,
+  GazeNotDetected = 8,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDProEvtInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDProEvtInfo.aidl
new file mode 100644
index 0000000..a62fcd4
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDProEvtInfo.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FDProEvtInfo {
+  int fdEvtTypeMask;
+  vendor.qti.hardware.camera.aon.FaceInfoPro faceInfo;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDRegisterInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDRegisterInfo.aidl
new file mode 100644
index 0000000..b7add05
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FDRegisterInfo.aidl
@@ -0,0 +1,31 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FDRegisterInfo {
+  int fdEvtTypeMask;
+  int fdAlgoModeIdx;
+  vendor.qti.hardware.camera.aon.DeliveryMode deliveryMode;
+  int deliveryPeriodMs;
+  int detectionPerDelivery;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FaceInfoPro.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FaceInfoPro.aidl
new file mode 100644
index 0000000..1b9d158
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FaceInfoPro.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FaceInfoPro {
+  int frameDimWidth;
+  int frameDimHeight;
+  vendor.qti.hardware.camera.aon.FaceInfoProPerFace[] perFace;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FaceInfoProPerFace.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FaceInfoProPerFace.aidl
new file mode 100644
index 0000000..30e1425
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FaceInfoProPerFace.aidl
@@ -0,0 +1,32 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FaceInfoProPerFace {
+  int angleRoll;
+  int angleYaw;
+  int width;
+  int height;
+  vendor.qti.hardware.camera.aon.FacePosType center;
+  boolean isGazeDetected;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FacePosType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FacePosType.aidl
new file mode 100644
index 0000000..2e75a12
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/FacePosType.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable FacePosType {
+  int x;
+  int y;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/IAONService.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/IAONService.aidl
new file mode 100644
index 0000000..e6a5a29
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/IAONService.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+interface IAONService {
+  vendor.qti.hardware.camera.aon.AONSensorInfo[] GetAONSensorInfoList();
+  long RegisterClient(in vendor.qti.hardware.camera.aon.IAONServiceCallback callback, in vendor.qti.hardware.camera.aon.AONRegisterInfo regInfo);
+  vendor.qti.hardware.camera.aon.Status UnregisterClient(in long clientHandle);
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/IAONServiceCallback.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/IAONServiceCallback.aidl
new file mode 100644
index 0000000..e6a74be
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/IAONServiceCallback.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+interface IAONServiceCallback {
+  void NotifyAONCallbackEvent(in long clientHandle, in vendor.qti.hardware.camera.aon.AONCallbackEvent cbEvt);
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/PositionType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/PositionType.aidl
new file mode 100644
index 0000000..7bb83ef
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/PositionType.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum PositionType {
+  REAR = 0,
+  FRONT = 1,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/QREvtInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/QREvtInfo.aidl
new file mode 100644
index 0000000..f8d2435
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/QREvtInfo.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable QREvtInfo {
+  int qrEvtTypeMask;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/QREvtType.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/QREvtType.aidl
new file mode 100644
index 0000000..5c5b9dd
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/QREvtType.aidl
@@ -0,0 +1,28 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum QREvtType {
+  QRCodeDetected = 1,
+  QRCodeNotDetected = 2,
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/QRRegisterInfo.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/QRRegisterInfo.aidl
new file mode 100644
index 0000000..fbf6de7
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/QRRegisterInfo.aidl
@@ -0,0 +1,30 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@VintfStability
+parcelable QRRegisterInfo {
+  int qrEvtTypeMask;
+  vendor.qti.hardware.camera.aon.DeliveryMode deliveryMode;
+  int deliveryPeriodMs;
+  int detectionPerDelivery;
+}
diff --git a/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/Status.aidl b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/Status.aidl
new file mode 100644
index 0000000..2f795ed
--- /dev/null
+++ b/camera/aon/aidl/aidl_api/vendor.qti.hardware.camera.aon/current/vendor/qti/hardware/camera/aon/Status.aidl
@@ -0,0 +1,32 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.camera.aon;
+@Backing(type="int") @VintfStability
+enum Status {
+  SUCCESS = 0,
+  FAILED = 1,
+  NOT_SUPPORTED = 2,
+  BAD_STATE = 3,
+  INVALID_CALLBACK_PTR = 4,
+  ABORT = 5,
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONCallbackEvent.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONCallbackEvent.aidl
new file mode 100644
index 0000000..83c57ed
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONCallbackEvent.aidl
@@ -0,0 +1,40 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.AONServiceType;
+import vendor.qti.hardware.camera.aon.FDEvtInfo;
+import vendor.qti.hardware.camera.aon.FDProEvtInfo;
+import vendor.qti.hardware.camera.aon.QREvtInfo;
+
+/**
+ * The event callback from AON service to client
+ */
+@VintfStability
+parcelable AONCallbackEvent {
+    /**
+     * Service type of the callback event.
+     */
+    AONServiceType srvType;
+
+    /**
+     * The event information for FaceDetect.
+     * Only applicable when srvType is FaceDetect.
+     */
+    FDEvtInfo fdEvtInfo;
+
+    /**
+     * The event information for FaceDetectPro.
+     * Only applicable when srvType is FaceDetectPro.
+     */
+    FDProEvtInfo fdProEvtInfo;
+
+    /**
+     * The event information for QRCode.
+     * Only applicable when srvType is QRCode.
+     */
+    QREvtInfo qrEvtInfo;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONRegisterInfo.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONRegisterInfo.aidl
new file mode 100644
index 0000000..12b0cb9
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONRegisterInfo.aidl
@@ -0,0 +1,40 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.AONServiceType;
+import vendor.qti.hardware.camera.aon.FDRegisterInfo;
+import vendor.qti.hardware.camera.aon.QRRegisterInfo;
+
+/**
+ * The register information filled by client
+ */
+@VintfStability
+parcelable AONRegisterInfo {
+    /**
+     * Index of to the sensorInfoList returned in GetAONSensorInfoList
+     * Indicate which aon sensor the client would like to register
+     */
+    int aonIdx;
+
+    /**
+     * Indicate which AONServiceType the client would like to register after knowing
+     * the capability of each AON sensor by parsing the AONSensorCap in sensorInfoList
+     */
+    AONServiceType srvType;
+
+    /**
+     * The FD register information filled by client.
+     * Only applicable when service type is FaceDetect or FaceDetectPro
+     */
+    FDRegisterInfo fdRegInfo;
+
+    /**
+     * The QRCode register information filled by client.
+     * Only applicable when service type is QRCode
+     */
+    QRRegisterInfo qrRegInfo;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONSensorCap.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONSensorCap.aidl
new file mode 100644
index 0000000..90fdec1
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONSensorCap.aidl
@@ -0,0 +1,25 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.AONServiceType;
+import vendor.qti.hardware.camera.aon.FDAlgoMode;
+
+/**
+ * The AONServiceType and corresponding algo mode list supported by AON sensor
+ */
+@VintfStability
+parcelable AONSensorCap {
+    /**
+     * Supported AONServiceType by AON sensor
+     */
+    AONServiceType srvType;
+
+    /**
+     * The supported fdAlgoMode list. Only applicable when srvType is FaceDetect or FaceDetectPro
+     */
+    FDAlgoMode[] fdAlgoModes;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONSensorInfo.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONSensorInfo.aidl
new file mode 100644
index 0000000..633e5b8
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONSensorInfo.aidl
@@ -0,0 +1,24 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.AONSensorCap;
+import vendor.qti.hardware.camera.aon.PositionType;
+
+/**
+ * The information of an AON sensor
+ */
+@VintfStability
+parcelable AONSensorInfo {
+    /**
+     * Position type of AON sensor
+     */
+    PositionType position;
+    /**
+     * List of supported AONServiceType by AON sensor
+     */
+    AONSensorCap[] sensorCaps;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONServiceType.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONServiceType.aidl
new file mode 100644
index 0000000..7db15ef
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/AONServiceType.aidl
@@ -0,0 +1,38 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+@VintfStability
+@Backing(type="int")
+enum AONServiceType {
+    /**
+     * Face Detect
+     */
+    FaceDetect = 0,
+
+    /**
+     * Face Detect Pro
+     */
+    FaceDetectPro = 1,
+
+    /**
+     * QR Code Detect
+     */
+    QRCode = 2,
+
+    /**
+     * Vendor defined events start
+     */
+    VendorDefinedStart = 0x1000000,
+
+    /**
+     * Add vendor defined events here
+     *
+     *
+     * Vendor defined event End
+     */
+    VendorDefinedEnd,
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/DeliveryMode.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/DeliveryMode.aidl
new file mode 100644
index 0000000..07ba35c
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/DeliveryMode.aidl
@@ -0,0 +1,23 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+/**
+ * The delivery mode of event detection
+ */
+@VintfStability
+@Backing(type="int")
+enum DeliveryMode {
+    /**
+     * Detection is triggered to run based on motion detected by sensor.
+     */
+    MotionBased = 0,
+    /**
+     * Detection is triggered to run periodically according to
+     * the value of deliveryPeriodMs set by client during RegisterClient.
+     */
+    TimeBased = 1,
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDAlgoMode.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDAlgoMode.aidl
new file mode 100644
index 0000000..98c733f
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDAlgoMode.aidl
@@ -0,0 +1,37 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.FDEngineType;
+
+/**
+ * The information of the FD algorithm mode
+ */
+@VintfStability
+parcelable FDAlgoMode {
+    /**
+     * Image resolution used for algo processing in this algo mode.
+     */
+    int width;
+    /**
+     * Image resolution used for algo processing in this algo mode.
+     */
+    int height;
+    /**
+     * Indiates whether this FD algo mode is island-capable.
+     */
+    boolean isIslandModeCapable;
+    /**
+     * Indicates what the supporting engine is.
+     */
+    FDEngineType fdEngine;
+    /**
+     * A bit-mask indicating which FDEvtType are supported
+     * in this FDAlgoMode. If both FaceDetected & GazeDetected are
+     * supported, the supportedFDEvtTypeMask will be 0x5(0x1|0x4)
+     */
+    int supportedFDEvtTypeMask;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDEngineType.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDEngineType.aidl
new file mode 100644
index 0000000..7127a17
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDEngineType.aidl
@@ -0,0 +1,22 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+/**
+ * The underlying engine type of the algorithm
+ */
+@VintfStability
+@Backing(type="int")
+enum FDEngineType {
+    /**
+     * CADL engine (Lower power, lower memory usage engine).
+     */
+    EngineCADL = 0,
+    /**
+     * eNPU engine (Higher power, higher memory usage engine).
+     */
+    EngineENPU = 1,
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDEvtInfo.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDEvtInfo.aidl
new file mode 100644
index 0000000..2908f74
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDEvtInfo.aidl
@@ -0,0 +1,19 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+/**
+ * The event information for FaceDetect AONServiceType
+ */
+@VintfStability
+parcelable FDEvtInfo {
+    /**
+     * Bit Mask to indicate the FDEvtTypes of this event.
+     * If fdEvtTypeMask is 0x5(0x1|0x4), that means both
+     * face & gaze are detected by AONService
+     */
+    int fdEvtTypeMask;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDEvtType.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDEvtType.aidl
new file mode 100644
index 0000000..5e4f698
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDEvtType.aidl
@@ -0,0 +1,32 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+/**
+ * The event type supported by FaceDetect and FaceDetectPro.
+ * These are bit values for client to assign to the fdEvtTypeMask in FDRegisterInfo during RegisterClient
+ * and to check the fdEvtTypeMask in FDEvtInfo when receiving the AONCallbackEvent.
+ */
+@VintfStability
+@Backing(type="int")
+enum FDEvtType {
+    /**
+     * This indicates that face detection was performed and a face is detected.
+     */
+    FaceDetected = 1,
+    /**
+     * This indicates that face detection was performed and a face is not detected.
+     */
+    FaceNotDetected = 2,
+    /**
+     * This indicates that face detection was performed and an eye gaze is detected.
+     */
+    GazeDetected = 4,
+    /**
+     * This indicates that face detection was performed and an eye gaze is not detected.
+     */
+    GazeNotDetected = 8,
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDProEvtInfo.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDProEvtInfo.aidl
new file mode 100644
index 0000000..8ef55cc
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDProEvtInfo.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.FaceInfoPro;
+
+/**
+ * The event information for FaceDetectPro AONServiceType
+ */
+@VintfStability
+parcelable FDProEvtInfo {
+    /**
+     * Bit Mask to indicate the FDEvtTypes of this event.
+     * If fdEvtTypeMask is 0x5(0x1|0x4), that means both
+     * face & gaze are detected by AONService
+     */
+    int fdEvtTypeMask;
+    /**
+     * Face information of detected faces or gazes.
+     * Only applicable when the BIT of FaceDetected or GazeDetected
+     * in fdEvtTypeMask is being set by AONService.
+     */
+    FaceInfoPro faceInfo;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDRegisterInfo.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDRegisterInfo.aidl
new file mode 100644
index 0000000..21eec9e
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FDRegisterInfo.aidl
@@ -0,0 +1,51 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.DeliveryMode;
+
+/**
+ * The FD register information filled by client.
+ * Only applicable when service type is FaceDetect or FaceDetectPro
+ */
+@VintfStability
+parcelable FDRegisterInfo {
+    /**
+     * Indicate which FDEvtType the client is interested in.
+     * If client need both FaceDetected & GazeDetected,
+     * the fdEvtTypeMask should be assigned as 0x5(0x1|0x4)
+     */
+    int fdEvtTypeMask;
+    /**
+     * Index to the algoModes described in AONSensorCap which returned in GetAONSensorInfoList
+     */
+    int fdAlgoModeIdx;
+    /**
+     * To configure the delivery mode of the detection callback event
+     * Since one AON sensor can only be configured one delivery mode at a time,
+     * AON service will take the value of the latest registered client as the final configuration.
+     */
+    DeliveryMode deliveryMode;
+    /**
+     * Period in ms of detection callback event.
+     * The value should be positive and only applicable when delivery mode is TimeBased.
+     * Since one AON sensor can only be configured one delivery mode at a time,
+     * AON service will take the value of the latest registered client as the final configuration.
+     */
+    int deliveryPeriodMs;
+    /**
+     * Number of times detections are performed per delivery
+     * Applicable for both deliveryMode - MotionBased & TimeBased
+     * If deliveryMode is MotionBased:
+     * This is the number of detections that will be performed each
+     * time a motion is detected.
+     * If deliveryMode is TimeBased:
+     * At the specified delivery periodicity, detection will be
+     * performed consecutively at the native streaming rate of the image sensor.
+     */
+    int detectionPerDelivery;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/FaceInfoPro.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FaceInfoPro.aidl
new file mode 100644
index 0000000..169e463
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FaceInfoPro.aidl
@@ -0,0 +1,29 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.FaceInfoProPerFace;
+
+/**
+ * The information passed from the event of FaceDetectPro service type
+ */
+@VintfStability
+parcelable FaceInfoPro {
+    /**
+     * Width of the frame dimension where the reported face ROI/Parts Coordinates will be based on
+     */
+    int frameDimWidth;
+
+    /**
+     * Height of the frame dimension where the reported face ROI/Parts Coordinates will be based on
+     */
+    int frameDimHeight;
+
+    /**
+     * A vector of the per face information
+     */
+    FaceInfoProPerFace[] perFace;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/FaceInfoProPerFace.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FaceInfoProPerFace.aidl
new file mode 100644
index 0000000..63678a4
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FaceInfoProPerFace.aidl
@@ -0,0 +1,45 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.FacePosType;
+
+/**
+ * The information per face passed from the event of FaceDetectPro service type
+ */
+@VintfStability
+parcelable FaceInfoProPerFace {
+    /**
+     * Indicates the roll (or rotate) angle of the face
+     * Valid values: -180 through 179, where a positive value means the face is
+     * rotated clockwise in-plane
+     */
+    int angleRoll;
+    /**
+     * Indicates the left/right direction of the face
+     * Valid values: -180 through 179, where a positive value means the face is
+     * facing right
+     */
+    int angleYaw;
+    /**
+     * Width of the face in the frame
+     */
+    int width;
+    /**
+     * height of the face in the frame
+     */
+    int height;
+    /**
+     * Position of the center of the face in the frame
+     */
+    FacePosType center;
+    /**
+     * Whether an eye gaze is detected
+     * Only applicable when the bit of GazeDetected or GazeNotDetected
+     * is set to 1 by client in RegisterClient.
+     */
+    boolean isGazeDetected;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/FacePosType.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FacePosType.aidl
new file mode 100644
index 0000000..64b67a8
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/FacePosType.aidl
@@ -0,0 +1,27 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+/**
+ * The information passed from the event of FaceDetectPro service type
+ */
+@VintfStability
+parcelable FacePosType {
+    /**
+     * X coordinate of a position
+     * It is relative to the frame dimension width (exposed in FaceInfoPro)
+     * It can be negative (e.g. a facial part can be estimated to be outside of the
+     * frame boundary)
+     */
+    int x;
+    /**
+     * Y coordinate of a position
+     * It is relative to the frame dimension height (exposed in FaceInfoPro)
+     * It can be negative (e.g. a facial part can be estimated to be outside of the
+     * frame boundary)
+     */
+    int y;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/IAONService.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/IAONService.aidl
new file mode 100644
index 0000000..08f1598
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/IAONService.aidl
@@ -0,0 +1,42 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.AONRegisterInfo;
+import vendor.qti.hardware.camera.aon.AONSensorInfo;
+import vendor.qti.hardware.camera.aon.AONServiceType;
+import vendor.qti.hardware.camera.aon.IAONServiceCallback;
+import vendor.qti.hardware.camera.aon.Status;
+
+@VintfStability
+interface IAONService {
+    /**
+     * Get a list of AONSensorInfo which describes supported AON sensors and corresponding capability information.
+     *
+     * @return   An output list of AONSensorInfo
+     */
+    AONSensorInfo[] GetAONSensorInfoList();
+
+    /**
+     * Register to an AON sensor for a specific AONServiceType
+     *
+     * @param  callback            Object passed by AIDL client which has callback function that got called for AON events
+     * @param  regInfo             Register information filled by client
+     *
+     * @return clientHandle        AON Service return a valid client handle upon success return NULL in case of failure
+     */
+    long RegisterClient(in IAONServiceCallback callback, in AONRegisterInfo regInfo);
+
+    /**
+     * Unregisters for AON service events.
+     *
+     * @param   clientHandle       Valid client handle assigned during registerClient API
+     *                             This client handle will be no longer valid after return
+     * @return  status             Returns status defined in enum Status. Returns Status::SUCCESS in case of success
+     *
+     */
+    Status UnregisterClient(in long clientHandle);
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/IAONServiceCallback.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/IAONServiceCallback.aidl
new file mode 100644
index 0000000..706eedd
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/IAONServiceCallback.aidl
@@ -0,0 +1,18 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.AONCallbackEvent;
+
+/**
+ * AON Service callback interface.
+ * This callback will be invoked when any client registers for AON Service
+ * and specific AON event triggered by hardware/lower layers
+ */
+@VintfStability
+interface IAONServiceCallback {
+    void NotifyAONCallbackEvent(in long clientHandle, in AONCallbackEvent cbEvt);
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/PositionType.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/PositionType.aidl
new file mode 100644
index 0000000..9abe095
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/PositionType.aidl
@@ -0,0 +1,22 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+/**
+ * Position type of an AON sensor.
+ */
+@VintfStability
+@Backing(type="int")
+enum PositionType {
+    /**
+     * Rear main camera.
+     */
+    REAR = 0,
+    /**
+     * Front main camera.
+     */
+    FRONT = 1,
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/QREvtInfo.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/QREvtInfo.aidl
new file mode 100644
index 0000000..e76bd8b
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/QREvtInfo.aidl
@@ -0,0 +1,17 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+/**
+ * The event information for QRCode AONServiceType
+ */
+@VintfStability
+parcelable QREvtInfo {
+    /**
+     * Bit Mask to indicate the QREvtTypes of this event.
+     */
+    int qrEvtTypeMask;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/QREvtType.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/QREvtType.aidl
new file mode 100644
index 0000000..232e5e3
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/QREvtType.aidl
@@ -0,0 +1,25 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+/**
+ * The event type supported by QRCode.
+ * These are bit values for client to assign to the qrEvtTypeMask in QRRegisterInfo during RegisterClient
+ * and to check the qrEvtTypeMask in QREvtInfo when receiving the AONCallbackEvent.
+ */
+@VintfStability
+@Backing(type="int")
+enum QREvtType {
+    /**
+     * This indicates that QRCode detection was performed and a QRCode is detected.
+     */
+    QRCodeDetected = 1,
+
+    /**
+     * This indicates that QRCode detection was performed and a QRCode is not detected.
+     */
+    QRCodeNotDetected = 2,
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/QRRegisterInfo.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/QRRegisterInfo.aidl
new file mode 100644
index 0000000..9e3797b
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/QRRegisterInfo.aidl
@@ -0,0 +1,49 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+import vendor.qti.hardware.camera.aon.DeliveryMode;
+
+/**
+ * The QRCode register information filled by client.
+ * Only applicable when service type is QRCode
+ */
+@VintfStability
+parcelable QRRegisterInfo {
+    /**
+     * Indicate which QREvtType  the client is interested in.
+     * If client need both QRCodeDetected & QRCodeNotDetected,
+     * the qrEvtTypeMask should be assigned as 0x3(0x1|0x2)
+     */
+    int qrEvtTypeMask;
+
+    /**
+     * To configure the delivery mode of the detection callback event
+     * Since one AON sensor can only be configured one delivery mode at a time,
+     * AON service will take the value of the latest registered client as the final configuration.
+     */
+    DeliveryMode deliveryMode;
+
+    /**
+     * Period in ms of detection callback event.
+     * The value should be positive and only applicable when delivery mode is TimeBased.
+     * Since one AON sensor can only be configured one delivery mode at a time,
+     * AON service will take the value of the latest registered client as the final configuration.
+     */
+    int deliveryPeriodMs;
+
+    /**
+     * Number of times detections are performed per delivery
+     * Applicable for both deliveryMode - MotionBased & TimeBased
+     * If deliveryMode is MotionBased:
+     * This is the number of detections that will be performed each
+     * time a motion is detected.
+     * If deliveryMode is TimeBased:
+     * At the specified delivery periodicity, detection will be
+     * performed consecutively at the native streaming rate of the image sensor.
+     */
+    int detectionPerDelivery;
+}
diff --git a/camera/aon/aidl/vendor/qti/hardware/camera/aon/Status.aidl b/camera/aon/aidl/vendor/qti/hardware/camera/aon/Status.aidl
new file mode 100644
index 0000000..e4d18f6
--- /dev/null
+++ b/camera/aon/aidl/vendor/qti/hardware/camera/aon/Status.aidl
@@ -0,0 +1,43 @@
+/*
+ * {Copyright (c) 2023 Qualcomm Innovation Center, Inc.
+ * All rights reserved. SPDX-License-Identifier: BSD-3-Clause-Clear}
+ */
+
+package vendor.qti.hardware.camera.aon;
+
+/**
+ * Status codes returned directly by the AIDL method calls upon errors
+ */
+@VintfStability
+@Backing(type="int")
+enum Status {
+    /**
+     * Success
+     */
+    SUCCESS = 0,
+
+    /**
+     * Generic failure status
+     */
+    FAILED = 1,
+
+    /**
+     * NOT_SUPPORTED
+     */
+    NOT_SUPPORTED = 2,
+
+    /**
+     * Bad State
+     */
+    BAD_STATE = 3,
+
+    /**
+     * CB Pointer is invalid
+     */
+    INVALID_CALLBACK_PTR = 4,
+
+    /**
+     * AON Service Aborted
+     */
+    ABORT = 5,
+}
