diff --git a/configs/privapp-permissions-fpcam.xml b/configs/privapp-permissions-fpcam.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cef62e45f5eaad7330c6fbd2f4db5b9eeb57cebc
--- /dev/null
+++ b/configs/privapp-permissions-fpcam.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/device.mk b/device.mk
index 9e8d1f614103c756bbffbe9b1f9d8b1912464785..ba5cf5d942c539329ba1b231d2a15afb0f0facbb 100644
--- a/device.mk
+++ b/device.mk
@@ -241,6 +241,13 @@ PRODUCT_COPY_FILES += \
PRODUCT_PACKAGES += \
fastbootd
+# FPCamera
+PRODUCT_PACKAGES += \
+ FairphoneCameraService
+
+PRODUCT_COPY_FILES += \
+ $(LOCAL_PATH)/configs/privapp-permissions-fpcam.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-fpcam.xml
+
# Gatekeeper
PRODUCT_PACKAGES += \
android.hardware.gatekeeper@1.0.vendor:64
diff --git a/parts/Android.bp b/parts/Android.bp
new file mode 100644
index 0000000000000000000000000000000000000000..7d131ca3780ccd012533856833b84cba82e8e0c8
--- /dev/null
+++ b/parts/Android.bp
@@ -0,0 +1,24 @@
+//
+// Copyright (C) 2023-2024 The LineageOS Project
+//
+// SPDX-License-Identifier: Apache-2.0
+//
+
+android_app {
+ name: "FairphoneCameraService",
+
+ srcs: ["src/**/*.java"],
+ resource_dirs: ["res"],
+ certificate: "platform",
+ platform_apis: true,
+ system_ext_specific: true,
+ privileged: true,
+
+ static_libs: [
+ "org.lineageos.settings.resources",
+ ],
+
+ optimize: {
+ proguard_flags_files: ["proguard.flags"],
+ },
+}
diff --git a/parts/AndroidManifest.xml b/parts/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0fdf13aa1df2236130f44c13c62b10dcb7ef2b84
--- /dev/null
+++ b/parts/AndroidManifest.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/parts/proguard.flags b/parts/proguard.flags
new file mode 100644
index 0000000000000000000000000000000000000000..2145628447c1c517cc772218a1f8f2a336bfcaff
--- /dev/null
+++ b/parts/proguard.flags
@@ -0,0 +1,3 @@
+-keep class org.lineageos.settings.fpcamera.* {
+ *;
+}
diff --git a/parts/res/values/strings-de.xml b/parts/res/values/strings-de.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d833090869795351a7c1f430bbac9fefd40cb582
--- /dev/null
+++ b/parts/res/values/strings-de.xml
@@ -0,0 +1,9 @@
+
+
+
+ Fairphone-Kamera aktivieren
+ Aktivieren Sie diese Option, um die Fairphone-Kamera-App nutzen zu können.
+
diff --git a/parts/res/values/strings-es.xml b/parts/res/values/strings-es.xml
new file mode 100644
index 0000000000000000000000000000000000000000..be515e4e4f0a999d5b5a4975eb219879e9f96642
--- /dev/null
+++ b/parts/res/values/strings-es.xml
@@ -0,0 +1,9 @@
+
+
+
+ Activar la cámara de Fairphone
+ Activa esta opción para poder usar la aplicación de cámara de Fairphone.
+
diff --git a/parts/res/values/strings-fr.xml b/parts/res/values/strings-fr.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6c7a112cc06c4438690207a3a6d535d597e3d5a
--- /dev/null
+++ b/parts/res/values/strings-fr.xml
@@ -0,0 +1,9 @@
+
+
+
+ Activer l\'appareil photo de Fairphone
+ Activez cette option pour pouvoir utiliser l\'application appareil photo de Fairphone.
+
diff --git a/parts/res/values/strings-it.xml b/parts/res/values/strings-it.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e0409ddfabdf7d060badbba150069b3a5ff98b8
--- /dev/null
+++ b/parts/res/values/strings-it.xml
@@ -0,0 +1,9 @@
+
+
+
+ Attivare la fotocamera di Fairphone
+ Attiva questa opzione per poter utilizzare l\'app fotocamera di Fairphone.
+
diff --git a/parts/res/values/strings.xml b/parts/res/values/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..50d54cd2318fb7a838ff8babb26390d70162c151
--- /dev/null
+++ b/parts/res/values/strings.xml
@@ -0,0 +1,9 @@
+
+
+
+ Fairphone\'s camera
+ Activate this option to be able to use Fairphone\'s camera app.
+
diff --git a/parts/res/xml/fp_camera_settings.xml b/parts/res/xml/fp_camera_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3ec65a7f4ed47453e4355bbff928aa062ce168cb
--- /dev/null
+++ b/parts/res/xml/fp_camera_settings.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/parts/src/org/lineageos/settings/BootCompletedReceiver.java b/parts/src/org/lineageos/settings/BootCompletedReceiver.java
new file mode 100644
index 0000000000000000000000000000000000000000..3668216899899e05699d5b8b26932cfa15a77790
--- /dev/null
+++ b/parts/src/org/lineageos/settings/BootCompletedReceiver.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2023-2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.settings;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import org.lineageos.settings.fpcamera.FPCameraUtils;
+
+public class BootCompletedReceiver extends BroadcastReceiver {
+
+ private static final String TAG = "FairphoneCamera";
+
+ @Override
+ public void onReceive(final Context context, Intent intent) {
+ Log.d(TAG, "Received boot completed intent");
+ FPCameraUtils.startService(context);
+ }
+}
diff --git a/parts/src/org/lineageos/settings/fpcamera/FPCameraActivity.java b/parts/src/org/lineageos/settings/fpcamera/FPCameraActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..51e3504edc454f3b31d0c10c4f0cef2cf8b56896
--- /dev/null
+++ b/parts/src/org/lineageos/settings/fpcamera/FPCameraActivity.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2023-2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.settings.fpcamera;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.MenuItem;
+
+import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseActivity;
+
+import org.lineageos.settings.R;
+
+public class FPCameraActivity extends CollapsingToolbarBaseActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ getFragmentManager().beginTransaction().replace(R.id.content_frame,
+ new FPCameraFragment(), "fpCamera").commit();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ finishAfterTransition();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/parts/src/org/lineageos/settings/fpcamera/FPCameraFragment.java b/parts/src/org/lineageos/settings/fpcamera/FPCameraFragment.java
new file mode 100644
index 0000000000000000000000000000000000000000..e12f2d49dfe707402a2eba4ab6870726a286f15b
--- /dev/null
+++ b/parts/src/org/lineageos/settings/fpcamera/FPCameraFragment.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2023-2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.settings.fpcamera;
+
+import android.os.Bundle;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragment;
+import androidx.preference.SwitchPreference;
+
+import org.lineageos.settings.R;
+
+import java.io.IOException;
+
+public class FPCameraFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener {
+
+ private static final String PREF_FP_CAMERA = "fp_camera_pref";
+
+ private SwitchPreference mFPCameraPref;
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ addPreferencesFromResource(R.xml.fp_camera_settings);
+
+ mFPCameraPref = findPreference(PREF_FP_CAMERA);
+ mFPCameraPref.setOnPreferenceChangeListener(this);
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ if (preference == mFPCameraPref) {
+ boolean value = (Boolean) newValue;
+ return FPCameraUtils.setApplicationEnabledSetting(getActivity(), value);
+ }
+ return false;
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ }
+}
diff --git a/parts/src/org/lineageos/settings/fpcamera/FPCameraUtils.java b/parts/src/org/lineageos/settings/fpcamera/FPCameraUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..b8bf62f0690c3ff2e2b3fce0a49351495e65a814
--- /dev/null
+++ b/parts/src/org/lineageos/settings/fpcamera/FPCameraUtils.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2023-2024 The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.settings.fpcamera;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+import android.util.Log;
+
+import androidx.preference.PreferenceManager;
+
+public class FPCameraUtils {
+
+ private static final String TAG = "FPCameraUtils";
+ private static final String PREF_FIRST_BOOT = "first_boot";
+ private static final String FP_CAMERA_PACKAGE = "com.fp.camera";
+
+ public static boolean setApplicationEnabledSetting(Context context, boolean enable) {
+ PackageManager pm = context.getPackageManager();
+ try {
+ pm.setApplicationEnabledSetting(FP_CAMERA_PACKAGE,
+ enable ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP);
+ return true;
+ } catch (Exception e) {
+ Log.e(TAG, "Failed to " + (enable ? "enable" : "disable") + " " + FP_CAMERA_PACKAGE, e);
+ return false;
+ }
+ }
+
+ public static void startService(Context context) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+
+ if (isFirstBoot(prefs)) {
+ boolean isFPCamDisabled = setApplicationEnabledSetting(context, false);
+ if (isFPCamDisabled) {
+ prefs.edit().putBoolean(PREF_FIRST_BOOT, false).apply();
+ }
+ }
+ }
+
+ private static boolean isFirstBoot(SharedPreferences prefs) {
+ return prefs.getBoolean(PREF_FIRST_BOOT, true);
+ }
+}
diff --git a/proprietary-files.txt b/proprietary-files.txt
index fd9af2a1b6ffa9e39fa90e5258a047ab7de53e06..940eef5a2869d1bf346a29a4b3dd1b79e8921d93 100644
--- a/proprietary-files.txt
+++ b/proprietary-files.txt
@@ -159,7 +159,65 @@ vendor/lib64/libcamxstatscore.so
vendor/lib64/libcamxswprocessalgo.so
vendor/lib64/libcamxtintlessalgo.so
+# Camera (FPCamera)
+-priv-app/FPCamera/FPCamera.apk
+system_ext/etc/public.libraries-tct.txt
+system_ext/lib64/libtctcameraalgo_jni.tct.so
+vendor/etc/camera/capture_cache
+vendor/etc/camera/capture_model
+vendor/etc/camera/capture_policy
+vendor/etc/camera/cnet_h384w512_quan_0317_int8.tflite
+vendor/etc/camera/intsense_config_singlebokeh.bin
+vendor/etc/camera/modnet_c12v2_in_h416_w544.bin
+vendor/etc/camera/modnet_c12v2_in_h416_w544.mnn
+vendor/etc/camera/MotionDetParameter.cfg
+vendor/etc/camera/params_back_000_200.txt
+vendor/etc/camera/params_back_2000_4000.txt
+vendor/etc/camera/params_back_200_400.txt
+vendor/etc/camera/params_back_4000_10000.txt
+vendor/etc/camera/params_back_400_2000.txt
+vendor/etc/camera/params_front_0000_1000.txt
+vendor/etc/camera/params_front_1000_2500.txt
+vendor/etc/camera/params_front_2500_4000.txt
+vendor/etc/camera/params_front_4000_5000.txt
+vendor/etc/camera/params_SuperIQ.txt
+vendor/etc/camera/params.txt
+vendor/etc/camera/params_wide_0000_1000.txt
+vendor/etc/camera/params_wide_1000_3000.txt
+vendor/etc/camera/params_wide_3000_8000.txt
+vendor/etc/camera/params_wide_8000_10000.txt
+vendor/etc/camera/params_zoom_0100_0250.txt
+vendor/etc/camera/params_zoom_0250_1400.txt
+vendor/etc/camera/params_zoom_10000_18000.txt
+vendor/etc/camera/params_zoom_1400_2300.txt
+vendor/etc/camera/params_zoom_2300_10000.txt
+vendor/etc/camera/quantize_scene_0528_freeze_graph.tflite
+vendor/etc/camera/sg_cap_cache
+vendor/etc/camera/sg_cap_model
+vendor/etc/camera/sg_cap_policy
+vendor/lib64/libmotionDet.so
+vendor/lib64/libtcltflite.so
+vendor/lib64/libtctcameraalgo.so
+vendor/lib64/com.tct.cameraalgo.gs.so
+vendor/lib64/com.tct.cameraalgo.hdr.so
+vendor/lib64/com.tct.cameraalgo.hwmfnr.so
+vendor/lib64/com.tct.cameraalgo.mirror.so
+vendor/lib64/com.tct.cameraalgo.morpholdc.so
+vendor/lib64/com.tct.cameraalgo.morphonight.so
+vendor/lib64/com.tct.cameraalgo.morphozoom.so
+vendor/lib64/com.tct.cameraalgo.singlebokeh.so
+vendor/lib64/com.tct.cameraalgo.tcldualbokeh.so
+vendor/lib64/com.tct.cameraalgo.watermark.so
+vendor/lib64/libmorpho_image_refiner.so
+vendor/lib64/libanc_single_bokeh.so
+vendor/lib64/libanc_single_bokeh_rear.so
+vendor/lib64/libtcl_dualcam_bokeh_cap.so
+vendor/lib64/libtclSceneDetector.so
+vendor/lib64/libmorpho_super_resolution.so
+vendor/lib64/libmorpho_dcface.so
+
# Camera components
+vendor/lib64/camera/components/com.morpho.node.hdr.so
vendor/lib64/camera/components/com.morpho.node.ldc.so
vendor/lib64/camera/components/com.morpho.node.moviesolid.so
vendor/lib64/camera/components/com.morpho.node.sat.so
@@ -197,6 +255,7 @@ vendor/lib64/camera/components/com.qtistatic.stats.aec.so
vendor/lib64/camera/components/com.qtistatic.stats.af.so
vendor/lib64/camera/components/com.qtistatic.stats.awb.so
vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so
+vendor/lib64/camera/components/com.tct.node.scenedetect.so
# Camera firmware
vendor/firmware/CAMERA_ICP.elf
diff --git a/rootdir/etc/init.target.rc b/rootdir/etc/init.target.rc
index dbb78cec899fdbd7ad18dcb94e1867dc910dbb9a..f98501add9629742d8bf7641096325fa87606f7b 100644
--- a/rootdir/etc/init.target.rc
+++ b/rootdir/etc/init.target.rc
@@ -47,6 +47,7 @@ on init
start keymaster-4-0
chmod 0660 /dev/fpsensor
chown system system /dev/fpsensor
+ chown system camera /sys/devices/platform/soc/ac4a000.qcom,cci0/ac4a000.qcom,cci0:qcom,ois@0/ois_gain_get
on early-fs
start vold
diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts
index a88844517f6b34b235f0a4285a4dbe5fcf6986f3..c98f85e0264439c2e030029580b2852dcb9df62f 100644
--- a/sepolicy/vendor/file_contexts
+++ b/sepolicy/vendor/file_contexts
@@ -5,6 +5,26 @@
/dev/stmvl53l1_ranging u:object_r:vl53l1_device:s0
/sys/class/board_id/version u:object_r:tct_mmitest_sysfs:s0
+# FPCamera
+/vendor/lib64/libtctcameraalgo\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/com\.tct\.cameraalgo\.(.*)\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libundistort\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libfaceprotection\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libtflite_undist\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libtensorflowlite\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libmorpho_image_refiner\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libmpbase\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libtcl_dualcam_bokeh_cap\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libVDSuperPhotoAPI\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libancbase\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libanc_single_bokeh\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libanc_single_bokeh_rear\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libmorpho_super_resolution\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libanc_hdr\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/vendor.qti.hardware.camera.postproc@1.0\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libqcomisphidl\.so u:object_r:same_process_hal_file:s0
+/vendor/lib64/libmorpho_dcface\.so u:object_r:same_process_hal_file:s0
+
# Fingerprint
/data/fpsensor(/.*)? u:object_r:fpsensor_data_file:s0
/dev/fpsensor u:object_r:fpsensor_fp_device:s0
diff --git a/sepolicy/vendor/genfs_contexts b/sepolicy/vendor/genfs_contexts
index b8d09cfb7954145e59cf781a7b85ac8e9acbec0c..dc5c5ceead504a570c69ff2f6a48f2b27fae4876 100644
--- a/sepolicy/vendor/genfs_contexts
+++ b/sepolicy/vendor/genfs_contexts
@@ -1,3 +1,6 @@
+# FPCamera
+genfscon sysfs /devices/platform/soc/ac4a000.qcom,cci0/ac4a000.qcom,cci0:qcom,ois@0/ois_gain_get u:object_r:tct_mmitest_sysfs:s0
+
# LED
genfscon sysfs /devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-05/c440000.qcom,spmi:qcom,pm6150l@5:qcom,wled@d800/backlight/backlight/brightness u:object_r:sysfs_leds:s0
diff --git a/sepolicy/vendor/hal_camera_default.te b/sepolicy/vendor/hal_camera_default.te
index 9ce0a3b56188eecb5303f26b516e4f138c1cefd2..6c8ab87e6450f99da3869af4c564ff68f18b12bc 100644
--- a/sepolicy/vendor/hal_camera_default.te
+++ b/sepolicy/vendor/hal_camera_default.te
@@ -2,6 +2,7 @@ allow hal_camera_default vl53l1_device:chr_file rw_file_perms;
allow hal_camera_default vendor_xdsp_device:chr_file r_file_perms;
allow hal_camera_default mnt_vendor_file:dir r_dir_perms;
-allow hal_camera_default tct_mmitest_sysfs:file r_file_perms;
+allow hal_camera_default tct_mmitest_sysfs:file rw_file_perms;
+get_prop(hal_camera_default, vendor_tct_default_prop)
set_prop(hal_camera_default, vendor_t2m_sys_prop)
diff --git a/sepolicy/vendor/property_contexts b/sepolicy/vendor/property_contexts
index 0c8be86de9836d55c5d6670c2ab40e8f80bdc38f..ca2cbd323648f6219b828f18a1b1678966526d37 100644
--- a/sepolicy/vendor/property_contexts
+++ b/sepolicy/vendor/property_contexts
@@ -1,18 +1,38 @@
# Bluetooth
-persist.vendor.bt.a2dp_offload_cap u:object_r:vendor_bluetooth_prop:s0
+persist.vendor.bt.a2dp_offload_cap u:object_r:vendor_bluetooth_prop:s0
# Bluetooth MAC
-ro.vendor.t2m.btmac u:object_r:vendor_t2m_sys_prop:s0
+ro.vendor.t2m.btmac u:object_r:vendor_t2m_sys_prop:s0
# Camera
-vendor.t2m.camera_main.vcm_id u:object_r:vendor_t2m_sys_prop:s0
+vendor.t2m.camera_main.vcm_id u:object_r:vendor_t2m_sys_prop:s0
+
+# FPCamera
+persist.vendor.tct.camera.dualbokeh.dump u:object_r:vendor_tct_default_prop:s0
+persist.vendor.tct.camera.jpeg.dump u:object_r:vendor_tct_default_prop:s0
+persist.vendor.tct.camera.mirror.dump u:object_r:vendor_tct_default_prop:s0
+persist.vendor.tct.camera.morphomfnr.enable u:object_r:vendor_tct_default_prop:s0
+persist.vendor.tct.camera.morphozoom.dump u:object_r:vendor_tct_default_prop:s0
+persist.vendor.tct.camera.morphozoom.enable u:object_r:vendor_tct_default_prop:s0
+persist.vendor.tct.camera.tcldistortion.dump u:object_r:vendor_tct_default_prop:s0
+persist.vendor.tct.camera.watermark.dump u:object_r:vendor_tct_default_prop:s0
+persist.camera.morpholdc.isEnable u:object_r:vendor_tct_default_prop:s0
+vendor.tct.camera.dualbokeh.blurlevel u:object_r:vendor_tct_default_prop:s0
+vendor.tct.camera.dualbokeh.degree u:object_r:vendor_tct_default_prop:s0
+vendor.tct.camera.dualbokeh.printfocus u:object_r:vendor_tct_default_prop:s0
+vendor.tct.camera.dump.mode u:object_r:vendor_tct_default_prop:s0
+vendor.tct.camera.tcldistortion.drawface u:object_r:vendor_tct_default_prop:s0
+vendor.tct.camera.tcldistortion.enable u:object_r:vendor_tct_default_prop:s0
+vendor.tct.camera.thumbnail.dump u:object_r:vendor_tct_default_prop:s0
+vendor.tct.camera.thumbRotate.enable u:object_r:vendor_tct_default_prop:s0
+vendor.tct.camera.writeICCProfile u:object_r:vendor_tct_default_prop:s0
# Light Sensor Calibration
-ro.vendor.tct.backcaldata u:object_r:vendor_tct_default_prop:s0
-ro.vendor.tct.frontcaldata u:object_r:vendor_tct_default_prop:s0
+ro.vendor.tct.backcaldata u:object_r:vendor_tct_default_prop:s0
+ro.vendor.tct.frontcaldata u:object_r:vendor_tct_default_prop:s0
# Serial Nums
-vendor.t2m.camera_main.sn u:object_r:vendor_t2m_sys_prop:s0
-vendor.t2m.camera_aux.sn u:object_r:vendor_t2m_sys_prop:s0
-vendor.t2m.camera_front.sn u:object_r:vendor_t2m_sys_prop:s0
-vendor.t2m.fingerprint.chipid u:object_r:vendor_t2m_sys_prop:s0
+vendor.t2m.camera_main.sn u:object_r:vendor_t2m_sys_prop:s0
+vendor.t2m.camera_aux.sn u:object_r:vendor_t2m_sys_prop:s0
+vendor.t2m.camera_front.sn u:object_r:vendor_t2m_sys_prop:s0
+vendor.t2m.fingerprint.chipid u:object_r:vendor_t2m_sys_prop:s0