Changes for January 2023, syncing up to 20230104

This commit is contained in:
Andy CrossGate Yan
2023-01-15 13:47:12 +00:00
parent cd68e3dcbc
commit 800e1a579a
141 changed files with 57864 additions and 55599 deletions

View File

@@ -1,7 +1,7 @@
From 43119ff620379b3710f1411b0e965ed0b10982fc Mon Sep 17 00:00:00 2001
From d9083d41e17a8429dc53a6be9acfb437fd3b982b Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 9 Apr 2018 00:19:49 +0200
Subject: [PATCH 1/8] Increase default log_level to get actual selinux error in
Subject: [PATCH 1/9] Increase default log_level to get actual selinux error in
kmsg
---

View File

@@ -1,7 +1,7 @@
From 1e713fc5860318d2a99f31718fea884c8d461923 Mon Sep 17 00:00:00 2001
From 0deb03a6694729e084e8e81d7e840a851d130476 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 9 Sep 2020 22:36:42 +0200
Subject: [PATCH 2/8] Revert "libsepol: Make an unknown permission an error in
Subject: [PATCH 2/9] Revert "libsepol: Make an unknown permission an error in
CIL"
This reverts commit dc4e54126bf25dea4d51820922ccd1959be68fbc.

View File

@@ -1,7 +1,7 @@
From 383c762e65ba755da5f424cea56f7249fb4aa852 Mon Sep 17 00:00:00 2001
From fad09461b0c7ab877b32c5ab402c053335f19f18 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 31 Mar 2021 23:32:37 +0200
Subject: [PATCH 3/8] Workaround device/phh/treble conflict with SELinux policy
Subject: [PATCH 3/9] Workaround device/phh/treble conflict with SELinux policy
device/phh/treble defines the following three types (hostapd,
sysfs_usb_supply, rpmb_device)

View File

@@ -1,7 +1,7 @@
From f1ee5e7fb0ef1bbed930d955ce34601f91850762 Mon Sep 17 00:00:00 2001
From 8168537d375afd17235b88f6ee9bc9b2c3db06a3 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Fri, 6 Sep 2019 15:07:25 +0200
Subject: [PATCH 4/8] Allow /devices/virtual/block/ genfscon conflict (seen on
Subject: [PATCH 4/9] Allow /devices/virtual/block/ genfscon conflict (seen on
Xiaomi Mi 9)
Change-Id: I06e4e9d5b82d61a8aeab595b47e2589249675895

View File

@@ -1,7 +1,7 @@
From d023a3be8b43e5539ac5aab02f0fa96c03ed9901 Mon Sep 17 00:00:00 2001
From 5d08badc20058b79803197379ca0371b5ae18230 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 12 Sep 2019 20:37:04 +0200
Subject: [PATCH 5/8] if service is "rcs", accept conflict. Seen on Moto E5
Subject: [PATCH 5/9] if service is "rcs", accept conflict. Seen on Moto E5
Change-Id: I0cc2d0fad83f403f2b5d7458039b1564ce5ed9dd
---

View File

@@ -1,7 +1,7 @@
From 9cd3d8a0becbd182f5fe77af64ca7611ceba6fd1 Mon Sep 17 00:00:00 2001
From 1bb417ece7c1709906499a9cdd73c5b37ddd8c71 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 24 May 2020 17:22:22 +0200
Subject: [PATCH 6/8] Allow mismatches of exfat genfscon
Subject: [PATCH 6/9] Allow mismatches of exfat genfscon
---
libsepol/cil/src/cil_post.c | 4 ++++

View File

@@ -1,7 +1,7 @@
From 81a82adb74c53b1671f24cb69a140a7915707f0f Mon Sep 17 00:00:00 2001
From 6a0bc65c6bda1576d59bd89225ae4babfc3de6be Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Fri, 2 Mar 2018 22:49:55 +0100
Subject: [PATCH 7/8] Enable multipl_decls by default. This is needed because
Subject: [PATCH 7/9] Enable multipl_decls by default. This is needed because
8.0 init doesn't add -m
Change-Id: I43dc661d519f7b8576d72a828d8cbd444592bf5e

View File

@@ -1,7 +1,7 @@
From 426de61556334b4b1024f615302dadb1ed6d6ac8 Mon Sep 17 00:00:00 2001
From 1e5154623b208daf37d20d297f3c8ecaacfb1b28 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Fri, 25 Oct 2019 13:29:20 +0200
Subject: [PATCH 8/8] Fix boot on Moto devices using unknown class
Subject: [PATCH 8/9] Fix boot on Moto devices using unknown class
vendor sepolicy never contains new class or classorder, and are not
allowed to.

View File

@@ -0,0 +1,26 @@
From e0e22c909d3f107f54136921d723f2656d5677ff Mon Sep 17 00:00:00 2001
From: ponces <ponces26@gmail.com>
Date: Mon, 7 Nov 2022 16:14:20 +0000
Subject: [PATCH 9/9] Improve SELinux policy workaround on device/phh/treble
conflict to exit with SEPOL_OK instead of SEPOL_EEXIST
This fixes boot on many Samsung devices as exiting with SEPOL_EEXIST will prevent them to boot
---
libsepol/cil/src/cil_build_ast.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/libsepol/cil/src/cil_build_ast.c b/libsepol/cil/src/cil_build_ast.c
index 023fd6c7..61c8864b 100644
--- a/libsepol/cil/src/cil_build_ast.c
+++ b/libsepol/cil/src/cil_build_ast.c
@@ -141,7 +141,6 @@ int cil_add_decl_to_symtab(struct cil_db *db, symtab_t *symtab, hashtab_key_t ke
/* multiple_decls is enabled and works for this datum type, add node */
cil_list_append(prev->nodes, CIL_NODE, node);
node->data = prev;
- return SEPOL_EEXIST;
}
return SEPOL_OK;
--
2.25.1

View File

@@ -1,7 +1,7 @@
From 425ab90a2c6b4b92f3c18152f92b22511de556ba Mon Sep 17 00:00:00 2001
From f8173b19f4197fc7858d5d968cebd198855a14a1 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 5 Oct 2021 17:59:16 -0400
Subject: [PATCH 01/30] Fallback to stupid autobrightness if brightness values
Subject: [PATCH 01/35] Fallback to stupid autobrightness if brightness values
are broken
This is needed because of:
@@ -14,10 +14,10 @@ Change-Id: Ieb679b34239013a5e31b34cb010b12febd9ef6d9
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
index a25ac210f9c8..ed26223948b0 100644
index 416518613568..5a56266ad759 100644
--- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
@@ -317,9 +317,14 @@ public class DisplayDeviceConfig {
@@ -405,9 +405,14 @@ public class DisplayDeviceConfig {
* @return A configuration instance.
*/
public static DisplayDeviceConfig create(Context context, boolean useConfigXml) {

View File

@@ -1,7 +1,7 @@
From b8fc79c1f7c07e725a3e211119b4393d665d4658 Mon Sep 17 00:00:00 2001
From 943fd5f9ad41ea7c389a7fb66bd99527870bd834 Mon Sep 17 00:00:00 2001
From: Raphael Mounier <mounierr07@gmail.com>
Date: Sat, 6 Aug 2022 18:08:36 +0200
Subject: [PATCH 02/30] Fix env empty string - ANDROID_STORAGE
Subject: [PATCH 02/35] Fix env empty string - ANDROID_STORAGE
Huawei hi6250 define in init.hi6250.rc ANDROID_STORAGE to "", so check empty string and replace with default path. Apply change for all env directory
---

View File

@@ -1,7 +1,7 @@
From 74723cfbaaf7e2df53940f9935798a8297e1289f Mon Sep 17 00:00:00 2001
From 7a8367b927b9763fb048d708805ae23dd5032fbc Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 28 Nov 2017 18:28:04 +0100
Subject: [PATCH 03/30] Relax requirement for visible flag to sdcards
Subject: [PATCH 03/35] Relax requirement for visible flag to sdcards
The vast majority of sdcard readers are stable enough to be declared by
the API. (I see no counter-example)
@@ -13,10 +13,10 @@ Change-Id: Ia616671c03562d1eadaff5531a5c708a62d7ad3a
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index fc4da0b93c83..e8ec4be49f4f 100644
index 7f3676d0c52b..dc1083879b6e 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -1610,7 +1610,8 @@ class StorageManagerService extends IStorageManager.Stub
@@ -1616,7 +1616,8 @@ class StorageManagerService extends IStorageManager.Stub
// Adoptable public disks are visible to apps, since they meet
// public API requirement of being in a stable location.

View File

@@ -1,163 +0,0 @@
From b9fdd321006e6cc79697bc6224a60ac330a6e24e Mon Sep 17 00:00:00 2001
From: Danny Lin <danny@kdrag0n.dev>
Date: Sat, 16 Oct 2021 05:27:57 -0700
Subject: [PATCH 04/30] Add support for app signature spoofing
This is needed by microG GmsCore to pretend to be the official Google
Play Services package, because client apps check the package signature
to make sure it matches Google's official certificate.
This was forward-ported from the Android 10 patch by gudenau:
https://github.com/microg/android_packages_apps_GmsCore/pull/957
Changes made for Android 11:
- Updated PackageInfo calls
- Added new permission to public API surface, needed for
PermissionController which is now an updatable APEX on 11
- Added a dummy permission group to allow users to manage the
permission through the PermissionController UI
(by Vachounet <vachounet@live.fr>)
- Updated location provider comment for conciseness
Changes made for Android 12:
- Moved mayFakeSignature into lock-free Computer subclass
- Always get permissions for packages that request signature spoofing
(otherwise permissions are usually ommitted and thus the permission
check doesn't work properly)
- Optimize mayFakeSignature check order to improve performance
Changes made for Android 13:
- Computer subclass is now an independent class.
Change-Id: Ied7d6ce0b83a2d2345c3abba0429998d86494a88
---
core/api/current.txt | 2 ++
core/res/AndroidManifest.xml | 15 ++++++++++
core/res/res/values/strings.xml | 12 ++++++++
.../com/android/server/pm/ComputerEngine.java | 30 +++++++++++++++++--
4 files changed, 56 insertions(+), 3 deletions(-)
diff --git a/core/api/current.txt b/core/api/current.txt
index c8a43db2f9c2..277183036c60 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -87,6 +87,7 @@ package android {
field public static final String DUMP = "android.permission.DUMP";
field public static final String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR";
field public static final String FACTORY_TEST = "android.permission.FACTORY_TEST";
+ field public static final String FAKE_PACKAGE_SIGNATURE = "android.permission.FAKE_PACKAGE_SIGNATURE";
field public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE";
field public static final String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS";
field public static final String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED";
@@ -222,6 +223,7 @@ package android {
field public static final String CALL_LOG = "android.permission-group.CALL_LOG";
field public static final String CAMERA = "android.permission-group.CAMERA";
field public static final String CONTACTS = "android.permission-group.CONTACTS";
+ field public static final String FAKE_PACKAGE = "android.permission-group.FAKE_PACKAGE";
field public static final String LOCATION = "android.permission-group.LOCATION";
field public static final String MICROPHONE = "android.permission-group.MICROPHONE";
field public static final String NEARBY_DEVICES = "android.permission-group.NEARBY_DEVICES";
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 6e48de5ba31f..cef98d01a44c 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -3542,6 +3542,21 @@
android:description="@string/permdesc_getPackageSize"
android:protectionLevel="normal" />
+ <!-- Dummy user-facing group for faking package signature -->
+ <permission-group android:name="android.permission-group.FAKE_PACKAGE"
+ android:label="@string/permgrouplab_fake_package_signature"
+ android:description="@string/permgroupdesc_fake_package_signature"
+ android:request="@string/permgrouprequest_fake_package_signature"
+ android:priority="100" />
+
+ <!-- Allows an application to change the package signature as
+ seen by applications -->
+ <permission android:name="android.permission.FAKE_PACKAGE_SIGNATURE"
+ android:permissionGroup="android.permission-group.UNDEFINED"
+ android:protectionLevel="signature|privileged"
+ android:label="@string/permlab_fakePackageSignature"
+ android:description="@string/permdesc_fakePackageSignature" />
+
<!-- @deprecated No longer useful, see
{@link android.content.pm.PackageManager#addPackageToPreferred}
for details. -->
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index c6b60f586047..ecf5034f18bb 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -974,6 +974,18 @@
<!-- Permissions -->
+ <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permlab_fakePackageSignature">Spoof package signature</string>
+ <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Legitimate uses include an emulator pretending to be what it emulates. Grant this permission with caution only!</string>
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_fake_package_signature">Spoof package signature</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_fake_package_signature">allow to spoof package signature</string>
+ <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
+ <string name="permgrouprequest_fake_package_signature">Allow
+ &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to spoof package signature?</string>
+
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_statusBar">disable or modify status bar</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
index 259ca655d2b9..674b22e28a83 100644
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
@@ -1591,6 +1591,29 @@ public class ComputerEngine implements Computer {
return result;
}
+ private boolean requestsFakeSignature(AndroidPackage p) {
+ return p.getMetaData() != null &&
+ p.getMetaData().getString("fake-signature") != null;
+ }
+
+ private PackageInfo mayFakeSignature(AndroidPackage p, PackageInfo pi,
+ Set<String> permissions) {
+ try {
+ if (p.getMetaData() != null &&
+ p.getTargetSdkVersion() > Build.VERSION_CODES.LOLLIPOP_MR1) {
+ String sig = p.getMetaData().getString("fake-signature");
+ if (sig != null &&
+ permissions.contains("android.permission.FAKE_PACKAGE_SIGNATURE")) {
+ pi.signatures = new Signature[] {new Signature(sig)};
+ }
+ }
+ } catch (Throwable t) {
+ // We should never die because of any failures, this is system code!
+ Log.w("PackageManagerService.FAKE_PACKAGE_SIGNATURE", t);
+ }
+ return pi;
+ }
+
public final PackageInfo generatePackageInfo(PackageStateInternal ps,
@PackageManager.PackageInfoFlagsBits long flags, int userId) {
if (!mUserManager.exists(userId)) return null;
@@ -1620,13 +1643,14 @@ public class ComputerEngine implements Computer {
final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY
: mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.getAppId()));
// Compute granted permissions only if package has requested permissions
- final Set<String> permissions = ((flags & PackageManager.GET_PERMISSIONS) == 0
+ final Set<String> permissions = (((flags & PackageManager.GET_PERMISSIONS) == 0
+ && !requestsFakeSignature(p))
|| ArrayUtils.isEmpty(p.getRequestedPermissions())) ? Collections.emptySet()
: mPermissionManager.getGrantedPermissions(ps.getPackageName(), userId);
- PackageInfo packageInfo = PackageInfoUtils.generate(p, gids, flags,
+ PackageInfo packageInfo = mayFakeSignature(p, PackageInfoUtils.generate(p, gids, flags,
state.getFirstInstallTime(), ps.getLastUpdateTime(), permissions, state, userId,
- ps);
+ ps), permissions);
if (packageInfo == null) {
return null;
--
2.25.1

View File

@@ -1,7 +1,7 @@
From 0d723d79284ffb84a029d354580492876fbc9454 Mon Sep 17 00:00:00 2001
From 6ed0e4c93d9ed801924a2f7c34d05cfdf3397013 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 17 May 2018 20:28:35 +0200
Subject: [PATCH 05/30] Don't crash if there is IR HAL is not declared
Subject: [PATCH 05/35] Don't crash if there is IR HAL is not declared
Change-Id: I3afded27441bbee8244d5fda544b3e6d1238dc1b
---

View File

@@ -1,7 +1,7 @@
From 03b1fceea0b1a47ba2a03993eea5f2521c418944 Mon Sep 17 00:00:00 2001
From a9638d5d5e81d220ab0a49a0d4f1c53eb8901f9e Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 1 Jun 2022 16:56:20 -0400
Subject: [PATCH 06/30] Implement a persistent property to override the default
Subject: [PATCH 06/35] Implement a persistent property to override the default
primary camera (0)
Change-Id: I49b45d00bf71d7932591b3516d49a680e1b6568b
@@ -27,10 +27,10 @@ index 7193b93dba7f..aaa2887d7c5b 100644
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < numberOfCameras; i++) {
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index 228d05b05083..1d7005075d3f 100644
index 028b1afd9765..a6c318822d7e 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -1727,6 +1727,15 @@ public final class CameraManager {
@@ -1754,6 +1754,15 @@ public final class CameraManager {
}
}});

View File

@@ -1,17 +1,17 @@
From 2888eb102d00b8eaabaec536ca2ce0b95eb5fd4b Mon Sep 17 00:00:00 2001
From d5ebcae00b09c3ee45ef9a5ad44da456d3ad1db6 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 6 Aug 2018 12:49:00 +0200
Subject: [PATCH 07/30] Show APN Settings for CDMA carriers
Subject: [PATCH 07/35] Show APN Settings for CDMA carriers
---
telephony/java/android/telephony/CarrierConfigManager.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index e032f65f3427..f96d8bd9bc55 100644
index cf6d681d596a..4308f6ee40c4 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -8675,7 +8675,7 @@ public class CarrierConfigManager {
@@ -8686,7 +8686,7 @@ public class CarrierConfigManager {
sDefaults.putBoolean(KEY_OPERATOR_SELECTION_EXPAND_BOOL, true);
sDefaults.putBoolean(KEY_PREFER_2G_BOOL, false);
sDefaults.putBoolean(KEY_4G_ONLY_BOOL, false);

View File

@@ -1,7 +1,7 @@
From 429e3b26107f94404f3e7c01a368a5ec91c0389b Mon Sep 17 00:00:00 2001
From 5266fe30bf9b7a19220d68bd4a0998d2464fc0d2 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 8 Nov 2018 23:04:03 +0100
Subject: [PATCH 08/30] Re-order services so that it works even without qtaguid
Subject: [PATCH 08/35] Re-order services so that it works even without qtaguid
Change-Id: I0c0f527b3ae151d45c68f7ac6c205da3f34e74df
---
@@ -9,7 +9,7 @@ Change-Id: I0c0f527b3ae151d45c68f7ac6c205da3f34e74df
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 132dfb42e983..db95bc2ac2bb 100644
index 8102d892c2d7..ad9a50101e11 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -959,6 +959,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {

View File

@@ -1,7 +1,7 @@
From 1ff57569827f74f2ebcaea4ac0e7fad6458a834a Mon Sep 17 00:00:00 2001
From 285af2fd4f0f782390cbbd24485d3645c22a1cbb Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 24 Mar 2019 23:05:14 +0100
Subject: [PATCH 09/30] Support samsung Pie and Q light hal
Subject: [PATCH 09/35] Support samsung Pie and Q light hal
Change-Id: I01f94acd7d0672733e48854d80368f9ac6f861c6
---

View File

@@ -1,7 +1,7 @@
From 626dae36e22f0cfce7a7f40ae812d2ed219055e1 Mon Sep 17 00:00:00 2001
From 6f95d47885a2d4a8586bf9c3b56bbc9f9b4814df Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 12 Aug 2019 23:08:26 +0200
Subject: [PATCH 10/30] Add support for samsung touch, physical and hover
Subject: [PATCH 10/35] Add support for samsung touch, physical and hover
proximity sensor as fallback to real proximity sensor
Change-Id: I7a0f8b4665c802140d19197d850b77b2a7ac1865
@@ -10,10 +10,10 @@ Change-Id: I7a0f8b4665c802140d19197d850b77b2a7ac1865
1 file changed, 35 insertions(+)
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 9c673caf6f08..427d062de831 100644
index 9b7cd18760be..d41892634b80 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -2010,6 +2010,27 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
@@ -2049,6 +2049,27 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
? Sensor.TYPE_PROXIMITY : SensorUtils.NO_FALLBACK;
mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name,
fallbackType);
@@ -41,7 +41,7 @@ index 9c673caf6f08..427d062de831 100644
if (mProximitySensor != null) {
mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
TYPICAL_PROXIMITY_THRESHOLD);
@@ -2971,6 +2992,20 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
@@ -3095,6 +3116,20 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
public void onSensorChanged(SensorEvent event) {
if (mProximitySensorEnabled) {
final long time = SystemClock.uptimeMillis();

View File

@@ -1,7 +1,7 @@
From 55ecbae148221eb507c4f22cef9858b2966f2ee7 Mon Sep 17 00:00:00 2001
From 5ae82f9e13a66acdbcaee9aa9ce7190d94c16fd8 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 5 Apr 2020 16:32:46 +0200
Subject: [PATCH 11/30] Always allow overriding the number of work profiles
Subject: [PATCH 11/35] Always allow overriding the number of work profiles
Change-Id: I6eb09aa71663c6fbe7563e3038bffcabdba0ff6a
---
@@ -9,10 +9,10 @@ Change-Id: I6eb09aa71663c6fbe7563e3038bffcabdba0ff6a
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index a66f0177176d..acfe6c9e17d7 100644
index 7090881138c7..2f2b423a9a3b 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -6315,12 +6315,8 @@ public class UserManagerService extends IUserManager.Stub {
@@ -6432,12 +6432,8 @@ public class UserManagerService extends IUserManager.Stub {
*/
private static int getMaxUsersOfTypePerParent(UserTypeDetails userTypeDetails) {
final int defaultMax = userTypeDetails.getMaxAllowedPerParent();

View File

@@ -1,7 +1,7 @@
From cde569bb7e39cbfbcff17846cb3b397deb29bb1b Mon Sep 17 00:00:00 2001
From 895f6b5d236f65142b2fa2224ed1970656da0389 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sat, 6 Jun 2020 18:21:56 +0200
Subject: [PATCH 12/30] HOME deserves to wake-up devices just as well as back
Subject: [PATCH 12/35] HOME deserves to wake-up devices just as well as back
and menu
Change-Id: Ia562bafd8c620d00c17e8eb338e4701c6c4a3c3a

View File

@@ -1,7 +1,7 @@
From a382316556ded590fe9a26f50b7f712fd5e0a2b4 Mon Sep 17 00:00:00 2001
From 9f2b4ccb9c3192e58c4294a59a2b9ea07984e357 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 29 Sep 2020 22:39:47 +0200
Subject: [PATCH 13/30] Some devices have proximity sensor reporting NaN as max
Subject: [PATCH 13/35] Some devices have proximity sensor reporting NaN as max
range for some reason. Make them behave standard way by setting 5 cm
Change-Id: I3c39e3e914a05903c140235702e0480d2d58a612
@@ -10,10 +10,10 @@ Change-Id: I3c39e3e914a05903c140235702e0480d2d58a612
1 file changed, 3 insertions(+)
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 427d062de831..1de60dd46046 100644
index d41892634b80..be19e6c4ae53 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -2034,6 +2034,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
@@ -2073,6 +2073,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
if (mProximitySensor != null) {
mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
TYPICAL_PROXIMITY_THRESHOLD);

View File

@@ -1,7 +1,7 @@
From 0890446fae292d38fa640a10ee6ea0a2ab02a1e1 Mon Sep 17 00:00:00 2001
From 8a1150fa5061085d2ebd9fef09ac6e37c2f95c09 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 29 Sep 2020 22:40:10 +0200
Subject: [PATCH 14/30] Fix brightness range not being complete on Samsung
Subject: [PATCH 14/35] Fix brightness range not being complete on Samsung
devices
On some devices, minimum brightness is 0, which totally messes with
@@ -15,10 +15,10 @@ Change-Id: I4d97cbc32490949e83272b81ec6320a5483310b1
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 60a344f153ab..18d80f3f80f4 100644
index 36ee002709ef..54df08bd95d3 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -1134,9 +1134,11 @@ public final class PowerManagerService extends SystemService
@@ -1135,9 +1135,11 @@ public final class PowerManagerService extends SystemService
if (min == INVALID_BRIGHTNESS_IN_CONFIG || max == INVALID_BRIGHTNESS_IN_CONFIG
|| def == INVALID_BRIGHTNESS_IN_CONFIG) {

View File

@@ -1,7 +1,7 @@
From 7e0acc722c9fd061310aa48ec023e1ccb5bb58a0 Mon Sep 17 00:00:00 2001
From 816006c568ab3008e1d7a88d4d15dd082dbcc7f7 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 25 Oct 2020 23:57:26 +0100
Subject: [PATCH 15/30] Re-implement fnmatch-like behaviour for RRO java-side
Subject: [PATCH 15/35] Re-implement fnmatch-like behaviour for RRO java-side
T: Also apply to FrameworkParsingPackageUtils (@PeterCxy)
@@ -12,10 +12,10 @@ Change-Id: Id38292a9a1453aa87b8401c1fdb390fa4e63c7d1
2 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 995092117f4d..28efda00393d 100644
index c01e30ded50e..db6a36ee1b66 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -2544,8 +2544,17 @@ public class PackageParser {
@@ -2554,8 +2554,17 @@ public class PackageParser {
for (int i = 0; i < propNames.length; i++) {
// Check property value: make sure it is both set and equal to expected value
final String currValue = SystemProperties.get(propNames[i]);

View File

@@ -1,7 +1,7 @@
From de11206d21f61a22c3f39bceb60dacf741ce99bf Mon Sep 17 00:00:00 2001
From b82b1a7a33beb82bf1a7d4bb9ab5014e7120e1e7 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 6 Dec 2020 12:20:08 +0100
Subject: [PATCH 16/30] Make rounded corners padding overridable with
Subject: [PATCH 16/35] Make rounded corners padding overridable with
persist.sys.phh.rounded_corners_padding
Change-Id: I481c1c8849b2f22a7cdfb2896a6d3c2e7e3b44d9
@@ -12,7 +12,7 @@ Change-Id: I481c1c8849b2f22a7cdfb2896a6d3c2e7e3b44d9
3 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
index b0e2f8368703..614b0c03c696 100644
index efa864f12481..04ace4dc2f3a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
@@ -23,6 +23,7 @@ import android.content.res.Configuration;
@@ -23,7 +23,7 @@ index b0e2f8368703..614b0c03c696 100644
import android.os.UserHandle;
import android.provider.AlarmClock;
import android.util.AttributeSet;
@@ -263,8 +264,10 @@ public class QuickStatusBarHeader extends FrameLayout implements TunerService.Tu
@@ -264,8 +265,10 @@ public class QuickStatusBarHeader extends FrameLayout implements TunerService.Tu
mConfigShowBatteryEstimate = resources.getBoolean(R.bool.config_showBatteryEstimateQSBH);
@@ -34,7 +34,7 @@ index b0e2f8368703..614b0c03c696 100644
+ mRoundedCornerPadding = resources.getDimensionPixelSize(
+ R.dimen.rounded_corner_content_padding);
int qsOffsetHeight = SystemBarUtils.getQuickQsOffsetHeight(mContext);
int statusBarHeight = SystemBarUtils.getStatusBarHeight(mContext);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
index 5119b8f95aa8..cc8b2d5c0913 100644
@@ -62,7 +62,7 @@ index 5119b8f95aa8..cc8b2d5c0913 100644
private void updateVisibilities() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt
index f5462bc0fba5..c09ab6db814b 100644
index c850d4f9c56b..af12f592398b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt
@@ -39,6 +39,7 @@ import com.android.systemui.util.leak.RotationUtils.Rotation

View File

@@ -1,7 +1,7 @@
From 5f1362a864dcf873e2606ff2c4a9399ca70db814 Mon Sep 17 00:00:00 2001
From 8f63e465b1ddaa84bab57b824d61c2ec6986819b Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Fri, 11 Dec 2020 14:41:09 +0100
Subject: [PATCH 17/30] Remove useless notification about "console" service
Subject: [PATCH 17/35] Remove useless notification about "console" service
being running
---
@@ -9,10 +9,10 @@ Subject: [PATCH 17/30] Remove useless notification about "console" service
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index a78c64b6538d..f4bae98e1bf8 100644
index df5113b16f49..5740e7e23723 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -5176,7 +5176,7 @@ public class ActivityManagerService extends IActivityManager.Stub
@@ -5169,7 +5169,7 @@ public class ActivityManagerService extends IActivityManager.Stub
}
private void showConsoleNotificationIfActive() {

View File

@@ -1,7 +1,7 @@
From cd02e06d6fbde606706c1771193da2832a22ce44 Mon Sep 17 00:00:00 2001
From 2d14422205d961a92711afa56ead9b2ea2d6c4cb Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 16 Dec 2020 21:24:12 +0800
Subject: [PATCH 18/30] Revert "Remove unused SystemProperties.set"
Subject: [PATCH 18/35] Revert "Remove unused SystemProperties.set"
This reverts commit debb4616ef67f9ed5054eca51ec58592358ff55f.

View File

@@ -1,7 +1,7 @@
From 2f2bc2764b387a03026cf0e2b645b0b9ed86f038 Mon Sep 17 00:00:00 2001
From 24238287f42ac9c03c521e155c05a06556284d2e Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 16 Dec 2020 13:46:15 +0800
Subject: [PATCH 19/30] TelephonyManager: bring back getNetworkClass()
Subject: [PATCH 19/35] TelephonyManager: bring back getNetworkClass()
This partially reverts commit c058cac051ab083dc7fb7ea6aa85699110b2e9bf.

View File

@@ -1,7 +1,7 @@
From b8cd5cff6a7541dd1e70a91a8c6e43b928af250b Mon Sep 17 00:00:00 2001
From 8a6def47510623a545ef3682dac7c6d434351b53 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 16 Dec 2020 21:26:45 +0800
Subject: [PATCH 20/30] TelephonyManager: add API annotations for
Subject: [PATCH 20/35] TelephonyManager: add API annotations for
setTelephonyProperty
* This method was added back by reverting commit

View File

@@ -1,7 +1,7 @@
From ce4850163c105cf0baa193bcc9efad2a54478d2f Mon Sep 17 00:00:00 2001
From 95c0d229e1c77a7011bb0a75525b3d52ebd95f8d Mon Sep 17 00:00:00 2001
From: Alberto Ponces <ponces26@gmail.com>
Date: Tue, 2 Feb 2021 10:20:51 +0000
Subject: [PATCH 21/30] Fix Wakelock issue
Subject: [PATCH 21/35] Fix Wakelock issue
Prevent SystemUI crash due to "WakeLock under-locked Doze" (issue #12) by only releasing a wakelock that was not already released
---

View File

@@ -1,7 +1,7 @@
From 8b657065ea65f1b7140ad04e31b6e8a69ffc490c Mon Sep 17 00:00:00 2001
From df9f9f61c1f7c8e454a90ba0d8b15f8d3217983a Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sat, 20 Mar 2021 14:31:01 +0100
Subject: [PATCH 22/30] Automatically detect pick up sensor, so that an overlay
Subject: [PATCH 22/35] Automatically detect pick up sensor, so that an overlay
is required for the sole purpose of enabling pulse doze on pick up sensor
---
@@ -9,7 +9,7 @@ Subject: [PATCH 22/30] Automatically detect pick up sensor, so that an overlay
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/core/java/android/hardware/display/AmbientDisplayConfiguration.java b/core/java/android/hardware/display/AmbientDisplayConfiguration.java
index 7d8f2ff92200..bd79b727fd05 100644
index 8c71b363eb7b..ff57d445bbc0 100644
--- a/core/java/android/hardware/display/AmbientDisplayConfiguration.java
+++ b/core/java/android/hardware/display/AmbientDisplayConfiguration.java
@@ -25,6 +25,9 @@ import android.text.TextUtils;
@@ -22,7 +22,7 @@ index 7d8f2ff92200..bd79b727fd05 100644
import com.android.internal.R;
import com.android.internal.util.ArrayUtils;
@@ -100,8 +103,20 @@ public class AmbientDisplayConfiguration {
@@ -101,8 +104,20 @@ public class AmbientDisplayConfiguration {
/** @hide */
public boolean dozePickupSensorAvailable() {

View File

@@ -1,7 +1,7 @@
From 899145af82436c53748638465187b48df26a224b Mon Sep 17 00:00:00 2001
From 1e88b787a1b40f2258ba06dc9cade02b6ff39ace Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 23 Mar 2021 19:43:26 +0100
Subject: [PATCH 23/30] Catch broken mainBuiltInDisplayCutoutRectApproximation
Subject: [PATCH 23/35] Catch broken mainBuiltInDisplayCutoutRectApproximation
Some devices (Redmi Note 9T) have:
mainBuiltInDisplayCutoutRectApproximation = @android:mainBuiltInDisplayCutout

View File

@@ -1,7 +1,7 @@
From f6b967da32661d88c205b496571e0c8f14ca197c Mon Sep 17 00:00:00 2001
From abf8e674797c3115ac588d730294498a1c967389 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sat, 24 Mar 2018 08:01:48 +0100
Subject: [PATCH 24/30] backlight: Fix backlight control on Galaxy S9(+)
Subject: [PATCH 24/35] backlight: Fix backlight control on Galaxy S9(+)
Change-Id: I1fbbb47939c377597ef8ad6b88b2acea5f4acaa6

View File

@@ -1,7 +1,7 @@
From c3645feb413833f5e320fb4cb9d8b6a7457b8ff3 Mon Sep 17 00:00:00 2001
From 5708ccd78a837211c184808a83fdb5728620d716 Mon Sep 17 00:00:00 2001
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
Date: Sat, 4 Sep 2021 08:26:30 +0000
Subject: [PATCH 25/30] Revert "Switch long-press power behavior in AOSP."
Subject: [PATCH 25/35] Revert "Switch long-press power behavior in AOSP."
This reverts commit 803c77a0a24624111944832098c6f65158051dc4.
---
@@ -9,10 +9,10 @@ This reverts commit 803c77a0a24624111944832098c6f65158051dc4.
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index d655721615b6..6c1368c63b76 100644
index 659d0f37bf05..80fa6013ee77 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -993,7 +993,7 @@
@@ -1007,7 +1007,7 @@
5 - Go to assistant (Settings.Secure.ASSISTANT)
6 - Toggle torch on / off (if screen is off)
-->
@@ -21,7 +21,7 @@ index d655721615b6..6c1368c63b76 100644
<!-- The time in milliseconds after which a press on power button is considered "long". -->
<integer name="config_longPressOnPowerDurationMs">500</integer>
@@ -1025,7 +1025,7 @@
@@ -1039,7 +1039,7 @@
1 - Mute toggle
2 - Global actions menu
-->

View File

@@ -1,7 +1,7 @@
From 4a7e481c942057784ee61c40d50c0ae47b139440 Mon Sep 17 00:00:00 2001
From 8e6b31e1dc663e67e5b37b3f648e9833ae5a0ed1 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 27 Dec 2021 17:57:11 -0500
Subject: [PATCH 26/30] Once we integrate Samsung Power hal in libpowermanager,
Subject: [PATCH 26/35] Once we integrate Samsung Power hal in libpowermanager,
libpowermanager and its deps require linking against
vendor.samsung.hardware.miscpower@2.0

View File

@@ -1,7 +1,7 @@
From 98ff48370d40fdcb784ac6a2f2333530eea2473b Mon Sep 17 00:00:00 2001
From 00242c1479803645f0b4ee6983dc435e6c56dd69 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sat, 2 Apr 2022 18:04:01 -0400
Subject: [PATCH 27/30] Allow disabling of fingerprint cleanups, needed on some
Subject: [PATCH 27/35] Allow disabling of fingerprint cleanups, needed on some
Realme devices that cant enumerate
---
@@ -9,10 +9,10 @@ Subject: [PATCH 27/30] Allow disabling of fingerprint cleanups, needed on some
1 file changed, 2 insertions(+)
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
index 2a3f34ae3cd4..23087a4df68a 100644
index c1a86386dfd4..47f130b95267 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
@@ -729,6 +729,8 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
@@ -734,6 +734,8 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
private void scheduleInternalCleanup(int userId,
@Nullable ClientMonitorCallback callback) {

View File

@@ -1,7 +1,7 @@
From a243391a6fadaa01b3f2b8e0b8653dd23db277ab Mon Sep 17 00:00:00 2001
From f22c8359d376992a55fcfd366268ec42ffc5cbdf Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Fri, 17 Dec 2021 17:16:14 -0500
Subject: [PATCH 28/30] Reduce the size of udfps enroll progress bar. Some
Subject: [PATCH 28/35] Reduce the size of udfps enroll progress bar. Some
devices have their udfps pretty low, and the progress bar would make the icon
at the wrong place
@@ -11,7 +11,7 @@ Change-Id: I1609ad9ca316293dcaaf07f7e681d11aadfcd29c
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 3d56c2522f07..341ee91750f8 100644
index d7d88cea2dbc..da7a597883eb 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -577,7 +577,7 @@

View File

@@ -1,7 +1,7 @@
From 7ef5766dd4a6b7e48ab14388283705446fd6e2cc Mon Sep 17 00:00:00 2001
From 347ac13d5fcd6c7249212827c2cd403fdc238eb3 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 20 Dec 2021 15:01:41 -0500
Subject: [PATCH 29/30] Dynamically resize boot animation to match screen size
Subject: [PATCH 29/35] Dynamically resize boot animation to match screen size
Change-Id: I54e49fc6b8c670103852e212d1416e27ff976205
---

View File

@@ -1,7 +1,7 @@
From a4efb74c6ddd11ed5bace13786dbb0a633ec4753 Mon Sep 17 00:00:00 2001
From 26c09ef28bc48c592cb5ae6e4804b0e8b8e39911 Mon Sep 17 00:00:00 2001
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
Date: Sat, 15 Oct 2022 09:33:56 +0000
Subject: [PATCH 30/30] Revert "Remove more FDE methods from StorageManager"
Subject: [PATCH 30/35] Revert "Remove more FDE methods from StorageManager"
This reverts commit bd13f84152449a3ead6fa8604fd31f48c0224676.
---

View File

@@ -0,0 +1,28 @@
From 3e2cd958145b810f17b334208c6a01fbaa7e57a6 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sat, 3 Dec 2022 17:13:24 -0500
Subject: [PATCH 31/35] Set old fingerprint sensors to security "strong"
This allows removing config_biometric_sensors from overlays, which led
to Pixels not booting, because they are using AIDL biometric sensor, and
despite its name, config_biometric_sensors is HIDL-specific
---
.../core/java/com/android/server/biometrics/AuthService.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
index fffb445895a5..c39f80822b8c 100644
--- a/services/core/java/com/android/server/biometrics/AuthService.java
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
@@ -668,7 +668,7 @@ public class AuthService extends SystemService {
if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) {
modalities.add(String.valueOf(BiometricAuthenticator.TYPE_FACE));
}
- final String strength = String.valueOf(Authenticators.BIOMETRIC_CONVENIENCE);
+ final String strength = String.valueOf(Authenticators.BIOMETRIC_STRONG);
final String[] configStrings = new String[modalities.size()];
for (int i = 0; i < modalities.size(); ++i) {
final String id = String.valueOf(i);
--
2.25.1

View File

@@ -0,0 +1,100 @@
From efddf3d701ed0d2ae648c9cfed33550a08fcb529 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 14 Dec 2022 17:21:00 -0500
Subject: [PATCH 32/35] Call Samsung's ISehSysInputDev to report screen state
to touchscreen driver
This fixes touchscreen not waking up on Galaxy F23
---
services/core/Android.bp | 1 +
.../server/display/LocalDisplayAdapter.java | 31 +++++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/services/core/Android.bp b/services/core/Android.bp
index f6ba92a94cde..39161ba0df68 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -175,6 +175,7 @@ java_library_static {
"overlayable_policy_aidl-java",
"SurfaceFlingerProperties",
"com.android.sysprop.watchdog",
+ "vendor.samsung.hardware.sysinput-V1.2-java", // HIDL
],
javac_shard_size: 50,
}
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index 2a219289cf10..29f653f0edd4 100644
--- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
@@ -33,6 +33,7 @@ import android.os.Trace;
import android.util.DisplayUtils;
import android.util.LongSparseArray;
import android.util.Slog;
+import android.util.Log;
import android.util.SparseArray;
import android.view.Display;
import android.view.DisplayAddress;
@@ -48,6 +49,8 @@ import com.android.server.LocalServices;
import com.android.server.lights.LightsManager;
import com.android.server.lights.LogicalLight;
+import vendor.samsung.hardware.sysinput.V1_1.ISehSysInputDev;
+
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
@@ -226,6 +229,8 @@ final class LocalDisplayAdapter extends DisplayAdapter {
private DisplayEventReceiver.FrameRateOverride[] mFrameRateOverrides =
new DisplayEventReceiver.FrameRateOverride[0];
+ private boolean triedSamsungHal = false;
+ private ISehSysInputDev samsungSysinput = null;
LocalDisplayDevice(IBinder displayToken, long physicalDisplayId,
SurfaceControl.StaticDisplayInfo staticDisplayInfo,
@@ -815,16 +820,42 @@ final class LocalDisplayAdapter extends DisplayAdapter {
}
mSidekickActive = false;
}
+ if (!triedSamsungHal) {
+ triedSamsungHal = true;
+ try {
+ samsungSysinput = ISehSysInputDev.getService();
+ } catch(Throwable t) {}
+ }
final int mode = getPowerModeForState(state);
Trace.traceBegin(Trace.TRACE_TAG_POWER, "setDisplayState("
+ "id=" + physicalDisplayId
+ ", state=" + Display.stateToString(state) + ")");
+
+ if (samsungSysinput != null) {
+ try {
+ Log.d("PHH", "setTspEnable 1, " + state + ", true");
+ samsungSysinput.setTspEnable(1, state, true);
+ } catch(Throwable t) {
+ Log.d("PHH", "Failed settings tsp enable", t);
+ }
+ }
+
try {
mSurfaceControlProxy.setDisplayPowerMode(token, mode);
Trace.traceCounter(Trace.TRACE_TAG_POWER, "DisplayPowerMode", mode);
} finally {
Trace.traceEnd(Trace.TRACE_TAG_POWER);
}
+
+ if (samsungSysinput != null) {
+ try {
+ Log.d("PHH", "setTspEnable 1, " + state + ", false");
+ samsungSysinput.setTspEnable(1, state, false);
+ } catch(Throwable t) {
+ Log.d("PHH", "Failed settings tsp enable", t);
+ }
+ }
+
// If we're entering a suspended (but not OFF) power state and we
// have a sidekick available, tell it now that it can take control.
if (Display.isSuspendedState(state) && state != Display.STATE_OFF
--
2.25.1

View File

@@ -0,0 +1,26 @@
From df69b89ddbbd4b66ef07e6e3abbef9a0dedcd4c9 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 15 Dec 2022 15:54:50 -0500
Subject: [PATCH 33/35] Fixup of c50777 -- original commit only cares about R
vendors, but not about older ones. Apply that on older ones as well
---
.../core/java/com/android/server/biometrics/AuthService.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
index c39f80822b8c..7e6f35acc398 100644
--- a/services/core/java/com/android/server/biometrics/AuthService.java
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
@@ -633,7 +633,7 @@ public class AuthService extends SystemService {
final int firstApiLevel = SystemProperties.getInt(SYSPROP_FIRST_API_LEVEL, 0);
final int apiLevel = SystemProperties.getInt(SYSPROP_API_LEVEL, firstApiLevel);
String[] configStrings = mInjector.getConfiguration(getContext());
- if (configStrings.length == 0 && apiLevel == Build.VERSION_CODES.R) {
+ if (configStrings.length == 0 && apiLevel <= Build.VERSION_CODES.R) {
// For backwards compatibility with R where biometrics could work without being
// configured in config_biometric_sensors. In the absence of a vendor provided
// configuration, we assume the weakest biometric strength (i.e. convenience).
--
2.25.1

View File

@@ -0,0 +1,565 @@
From 96856d788adcfdf9b49b93b05509e816890dcfe7 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 18 Dec 2022 18:20:40 -0500
Subject: [PATCH 34/35] FOD support for Asus ZF8 and Samsung devices
Thanks Asus for providing a free device to make this support
And thanks @davigamer987 for donating enough to get a Samsung FOD device
to make this
Change-Id: Ib328f39217c3f9b42e13e186496b3f6391643637
---
packages/SystemUI/Android.bp | 1 +
packages/SystemUI/res/values/config.xml | 2 +-
.../biometrics/UdfpsControllerOverlay.kt | 7 +-
.../android/systemui/biometrics/UdfpsView.kt | 138 ++++++++++
services/core/Android.bp | 7 +-
.../server/biometrics/AuthService.java | 238 +++++++++++++++++-
6 files changed, 388 insertions(+), 5 deletions(-)
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 13372e8c284a..f6bb05fce8a9 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -126,6 +126,7 @@ android_library {
"lottie",
"LowLightDreamLib",
"vendor.lineage.powershare-V1.0-java",
+ "vendor.goodix.hardware.biometrics.fingerprint-V2.1-java",
],
manifest: "AndroidManifest.xml",
additional_manifests: ["LineageManifest.xml"],
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index da7a597883eb..d7d6fa34cce8 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -577,7 +577,7 @@
<!-- The radius of the enrollment progress bar, in dp -->
<integer name="config_udfpsEnrollProgressBar" translatable="false">
- 70
+ 50
</integer>
<!-- The time (in ms) needed to trigger the lock icon view's long-press affordance -->
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt
index 1c62f8a4e508..7b2713bf3419 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt
@@ -102,7 +102,9 @@ class UdfpsControllerOverlay(
gravity = android.view.Gravity.TOP or android.view.Gravity.LEFT
layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
flags = (Utils.FINGERPRINT_OVERLAY_LAYOUT_PARAM_FLAGS or
- WindowManager.LayoutParams.FLAG_SPLIT_TOUCH)
+ WindowManager.LayoutParams.FLAG_SPLIT_TOUCH) or
+ WindowManager.LayoutParams.FLAG_DIM_BEHIND
+ dimAmount = 0.0f
privateFlags = WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY
// Avoid announcing window title.
accessibilityTitle = " "
@@ -153,6 +155,9 @@ class UdfpsControllerOverlay(
windowManager.addView(this, coreLayoutParams.updateDimensions(animation))
touchExplorationEnabled = accessibilityManager.isTouchExplorationEnabled
+ dimUpdate = {
+ windowManager.updateViewLayout(this, coreLayoutParams.updateDimensions(animation).apply { dimAmount = it })
+ }
overlayTouchListener = TouchExplorationStateChangeListener {
if (accessibilityManager.isTouchExplorationEnabled) {
setOnHoverListener { v, event -> onTouch(v, event, true) }
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt
index a15456d46897..d591cc809129 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt
@@ -19,17 +19,26 @@ import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
+import android.graphics.PixelFormat
import android.graphics.PointF
import android.graphics.RectF
+import android.os.FileObserver
import android.util.AttributeSet
import android.util.Log
import android.view.MotionEvent
+import android.view.SurfaceHolder
+import android.view.SurfaceView
+import android.view.ViewGroup
import android.widget.FrameLayout
import com.android.systemui.R
import com.android.systemui.doze.DozeReceiver
+import java.io.File
+
+import vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon
private const val TAG = "UdfpsView"
+
/**
* The main view group containing all UDFPS animations.
*/
@@ -37,6 +46,54 @@ class UdfpsView(
context: Context,
attrs: AttributeSet?
) : FrameLayout(context, attrs), DozeReceiver {
+ private var currentOnIlluminatedRunnable: Runnable? = null
+ private val mySurfaceView = SurfaceView(context)
+ init {
+ mySurfaceView.setVisibility(INVISIBLE)
+ mySurfaceView.setZOrderOnTop(true)
+ addView(mySurfaceView, FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT))
+ mySurfaceView.holder.addCallback(object: SurfaceHolder.Callback{
+ override fun surfaceCreated(p0: SurfaceHolder) {
+ Log.d("PHH", "Surface created!")
+ val paint = Paint(0 /* flags */);
+ paint.setAntiAlias(true);
+ paint.setStyle(Paint.Style.FILL);
+ val colorStr = android.os.SystemProperties.get("persist.sys.phh.fod_color", "00ff00");
+ try {
+ val parsedColor = Color.parseColor("#" + colorStr);
+ val r = (parsedColor shr 16) and 0xff;
+ val g = (parsedColor shr 8) and 0xff;
+ val b = (parsedColor shr 0) and 0xff;
+ paint.setARGB(255, r, g, b);
+ } catch(t: Throwable) {
+ Log.d("PHH", "Failed parsing color #" + colorStr, t);
+ }
+ var canvas: Canvas? = null
+ try {
+ canvas = p0.lockCanvas();
+Log.d("PHH", "Surface dimensions ${canvas.getWidth()*1.0f} ${canvas.getHeight()*1.0f}")
+ canvas.drawOval(RectF(0.0f, 0.0f, canvas.getWidth()*1.0f, canvas.getHeight()*1.0f), paint);
+ } finally {
+ // Make sure the surface is never left in a bad state.
+ if (canvas != null) {
+ p0.unlockCanvasAndPost(canvas);
+ }
+ }
+
+ currentOnIlluminatedRunnable?.run()
+ }
+
+ override fun surfaceChanged(p0: SurfaceHolder, p1: Int, p2: Int, p3: Int) {
+Log.d("PHH", "Got surface size $p1 $p2 $p3")
+ }
+
+ override fun surfaceDestroyed(p0: SurfaceHolder) {
+Log.d("PHH", "Surface destroyed!")
+ }
+ })
+ mySurfaceView.holder.setFormat(PixelFormat.RGBA_8888)
+
+ }
// sensorRect may be bigger than the sensor. True sensor dimensions are defined in
// overlayParams.sensorBounds
@@ -62,6 +119,8 @@ class UdfpsView(
/** Parameters that affect the position and size of the overlay. */
var overlayParams = UdfpsOverlayParams()
+ var dimUpdate: (Float) -> Unit = {}
+
/** Debug message. */
var debugMessage: String? = null
set(value) {
@@ -140,15 +199,94 @@ class UdfpsView(
!(animationViewController?.shouldPauseAuth() ?: false)
}
+ fun goodixCmd(id: Int) {
+ val goodixSvc = IGoodixFingerprintDaemon.getService()
+ if(goodixSvc != null) {
+ goodixSvc.sendCommand(id, ArrayList(), { returnCode, resultData -> {
+ Log.e("PHH-Enroll", "Goodix send command returned code "+ returnCode);
+ }});
+ }
+ }
+
+ val asusGhbmOnAchieved = "/sys/class/drm/ghbm_on_achieved"
+ var hasAsusGhbm = File(asusGhbmOnAchieved).exists()
+ var samsungActualMaskBrightness = "/sys/class/lcd/panel/actual_mask_brightness"
+ val hasSamsungMask = File(samsungActualMaskBrightness).exists()
+ var fodFileObserver: FileObserver? = null
+
fun configureDisplay(onDisplayConfigured: Runnable) {
isDisplayConfigured = true
animationViewController?.onDisplayConfiguring()
mUdfpsDisplayMode?.enable(onDisplayConfigured)
+
+ mySurfaceView.setVisibility(VISIBLE)
+ Log.d("PHH", "setting surface visible!")
+
+ val brightness = File("/sys/class/backlight/panel0-backlight/brightness").readText().toDouble()
+ val maxBrightness = File("/sys/class/backlight/panel0-backlight/max_brightness").readText().toDouble()
+
+ // Assume HBM is max brightness
+ val dim = 1.0 - Math.pow( (brightness / maxBrightness), 1/2.3);
+ Log.d("PHH-Enroll", "Brightness is $brightness / $maxBrightness, setting dim to $dim")
+ if (hasAsusGhbm) {
+ dimUpdate(dim.toFloat())
+ }
+ if (hasSamsungMask) {
+ dimUpdate(dim.toFloat())
+ }
+
+ if(android.os.SystemProperties.get("ro.vendor.build.fingerprint").contains("ASUS")) {
+ goodixCmd(200001)
+ }
}
fun unconfigureDisplay() {
isDisplayConfigured = false
animationViewController?.onDisplayUnconfigured()
mUdfpsDisplayMode?.disable(null /* onDisabled */)
+
+ if (hasAsusGhbm) {
+ fodFileObserver = object: FileObserver(asusGhbmOnAchieved, FileObserver.MODIFY) {
+ override fun onEvent(event: Int, path: String): Unit {
+ Log.d("PHH-Enroll", "Asus ghbm event")
+ try {
+ val spotOn = File(asusGhbmOnAchieved).readText().toInt()
+ if(spotOn == 0) {
+ dimUpdate(0.0f)
+ fodFileObserver?.stopWatching()
+ fodFileObserver = null
+ }
+ } catch(e: Exception) {
+ Log.d("PHH-Enroll", "Failed dimpdate off", e)
+ }
+ }
+ };
+ fodFileObserver?.startWatching();
+ } else if (hasSamsungMask) {
+ fodFileObserver = object: FileObserver(asusGhbmOnAchieved, FileObserver.MODIFY) {
+ override fun onEvent(event: Int, path: String): Unit {
+ Log.d("PHH-Enroll", "samsung mask brightness event")
+ try {
+ val spotOn = File(samsungActualMaskBrightness).readText().toInt()
+ if(spotOn == 0) {
+ dimUpdate(0.0f)
+ fodFileObserver?.stopWatching()
+ fodFileObserver = null
+ }
+ } catch(e: Exception) {
+ Log.d("PHH-Enroll", "Failed dimpdate off", e)
+ }
+ }
+ };
+ fodFileObserver?.startWatching();
+ } else {
+ dimUpdate(0.0f)
+ }
+
+ mySurfaceView.setVisibility(INVISIBLE)
+ Log.d("PHH", "setting surface invisible!")
+ if(android.os.SystemProperties.get("ro.vendor.build.fingerprint").contains("ASUS")) {
+ goodixCmd(200003)
+ }
}
}
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 39161ba0df68..e9332f19fb3f 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -175,7 +175,12 @@ java_library_static {
"overlayable_policy_aidl-java",
"SurfaceFlingerProperties",
"com.android.sysprop.watchdog",
- "vendor.samsung.hardware.sysinput-V1.2-java", // HIDL
+ // HIDL
+ "vendor.samsung.hardware.sysinput-V1.2-java",
+ "vendor.goodix.hardware.biometrics.fingerprint-V2.1-java",
+ "vendor.samsung.hardware.biometrics.fingerprint-V3.0-java",
+ "vendor.oplus.hardware.biometrics.fingerprint-V2.1-java",
+ "vendor.oppo.hardware.biometrics.fingerprint-V2.1-java",
],
javac_shard_size: 50,
}
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
index 7e6f35acc398..063e3599d6cd 100644
--- a/services/core/java/com/android/server/biometrics/AuthService.java
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
@@ -77,6 +77,22 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import android.hardware.display.DisplayManager;
+
+import android.graphics.Point;
+import android.util.DisplayMetrics;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.PrintWriter;
+
+import android.os.FileObserver;
+import android.os.Build;
+
+import vendor.samsung.hardware.biometrics.fingerprint.V3_0.ISehBiometricsFingerprint;
+import vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon;
+import vendor.samsung.hardware.sysinput.V1_0.ISehSysInputDev;
+
/**
* System service that provides an interface for authenticating with biometrics and
* PIN/pattern/password to BiometricPrompt and lock screen.
@@ -95,6 +111,9 @@ public class AuthService extends SystemService {
@VisibleForTesting
final IAuthService.Stub mImpl;
+ private FileObserver fodFileObserver = null;
+ private ISehBiometricsFingerprint mSamsungFingerprint = null;
+
/**
* Class for injecting dependencies into AuthService.
* TODO(b/141025588): Replace with a dependency injection framework (e.g. Guice, Dagger).
@@ -652,6 +671,72 @@ public class AuthService extends SystemService {
registerAuthenticators(hidlConfigs);
mInjector.publishBinderService(this, mImpl);
+ try {
+ mSamsungFingerprint = ISehBiometricsFingerprint.getService();
+ android.util.Log.e("PHH", "Got samsung fingerprint HAL");
+ } catch(Exception e) {
+ android.util.Log.e("PHH", "Failed getting Samsung fingerprint HAL", e);
+ }
+ if(samsungHasCmd("fod_enable") && mSamsungFingerprint != null) {
+ samsungCmd("fod_enable,1,1,0");
+ String actualMaskBrightnessPath = "/sys/class/lcd/panel/actual_mask_brightness";
+ android.util.Log.e("PHH-Enroll", "Reading actual brightness file gives " + readFile(actualMaskBrightnessPath));
+ fodFileObserver = new FileObserver(actualMaskBrightnessPath, FileObserver.MODIFY) {
+ @Override
+ public void onEvent(int event, String path) {
+ String actualMask = readFile(actualMaskBrightnessPath);
+ try {
+ mSamsungFingerprint = ISehBiometricsFingerprint.getService();
+ } catch(Exception e) {}
+ Slog.d("PHH-Enroll", "New actual mask brightness is " + actualMask);
+ try {
+ int eventReq = 0;
+ if("0".equals(actualMask)) {
+ eventReq = 1; //released
+ } else {
+ eventReq = 2; //pressed
+ }
+ if(mSamsungFingerprint != null) {
+ mSamsungFingerprint.sehRequest(22 /* SEM_FINGER_STATE */, eventReq, new java.util.ArrayList<Byte>(),
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
+ }
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed setting samsung event for mask observer", e);
+ }
+ }
+ };
+ fodFileObserver.startWatching();
+ }
+
+ String asusGhbmOnAchieved = "/sys/class/drm/ghbm_on_achieved";
+ if( (new File(asusGhbmOnAchieved)).exists()) {
+ fodFileObserver = new FileObserver(asusGhbmOnAchieved, FileObserver.MODIFY) {
+ boolean wasOn = false;
+ @Override
+ public void onEvent(int event, String path) {
+ String spotOn = readFile(asusGhbmOnAchieved);
+ if("1".equals(spotOn)) {
+ if(!wasOn) {
+ try {
+ IGoodixFingerprintDaemon goodixDaemon = IGoodixFingerprintDaemon.getService();
+
+ //Send UI ready
+ goodixDaemon.sendCommand(200002, new java.util.ArrayList<Byte>(), (returnCode, resultData) -> {
+ Slog.e(TAG, "Goodix send command touch pressed returned code "+ returnCode);
+ });
+ } catch(Throwable t) {
+ Slog.d("PHH-Enroll", "Failed sending goodix command", t);
+ }
+ }
+ wasOn = true;
+ } else {
+ wasOn = false;
+ }
+ }
+ };
+ fodFileObserver.startWatching();
+ }
+
}
/**
@@ -775,18 +860,104 @@ public class AuthService extends SystemService {
? modality : (modality & ~BiometricAuthenticator.TYPE_CREDENTIAL);
}
+ private int[] dynamicUdfpsProps() {
+ DisplayManager mDM = (DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE);
+ Point displayRealSize = new Point();
+ DisplayMetrics displayMetrics = new DisplayMetrics();
+ mDM.getDisplay(0).getRealSize(displayRealSize);
+ mDM.getDisplay(0).getMetrics(displayMetrics);
+
+ if(readFile("/sys/class/fingerprint/fingerprint/position") != null) {
+ try {
+ ISehSysInputDev s = ISehSysInputDev.getService();
+ s.getTspFodInformation(0, (a, b) -> {
+ Slog.d("PHH-Enroll", "TspFod info " + a + ", " + b);
+ });
+ s.getTspFodPosition(0, (a, b) -> {
+ Slog.d("PHH-Enroll", "TspFod info " + a + ", " + b);
+ });
+ }catch(Throwable t) {
+ Slog.d("PHH-Enroll", "heya ", t);
+ }
+
+
+ android.util.Log.d("PHH", "Samsung fingerprint");
+ String[] fodPositionArray = readFile("/sys/class/fingerprint/fingerprint/position").split(",");
+ float bottomMM = Float.parseFloat(fodPositionArray[0]);
+ float areaSizeMM = Float.parseFloat(fodPositionArray[5]);
+ float heightMM = Float.parseFloat(fodPositionArray[2]);
+ float bottomInch = bottomMM * 0.0393700787f;
+ float areaSizeInch = areaSizeMM * 0.0393700787f;
+ float heightInch = heightMM * 0.0393700787f;
+ int bottomPx = (int)(bottomInch * displayMetrics.ydpi);
+ int areaSizePx = (int)(areaSizeInch * displayMetrics.ydpi);
+ int midDistPx = (int)(areaSizeInch * displayMetrics.ydpi / 2.0f);
+
+ float mW = areaSizePx/2;
+ float mH = areaSizePx/2;
+ float mX = displayRealSize.x/2;
+ //float mY = displayRealSize.y - bottomPx - midDistPx;
+ float mY = displayRealSize.y - (bottomInch * displayMetrics.ydpi) - (areaSizeInch * displayMetrics.ydpi / 2.0f);
+
+ samsungCmd(String.format("fod_rect,%d,%d,%d,%d", (int)(mX - mW/2), (int)(mY - mW/2), (int)(mX + mW/2), (int)(mY + mW/2)));
+ Slog.d("PHH-Enroll", "Display real size is " + displayRealSize.y + ", dpy " + displayMetrics.ydpi);
+
+ int udfpsProps[] = new int[3];
+ udfpsProps[0] = (int)mX;
+ udfpsProps[1] = (int)mY;
+ udfpsProps[2] = (int)mW;
+
+ try {
+ mSamsungFingerprint = ISehBiometricsFingerprint.getService();
+ Slog.d("PHH-Enroll", "Samsung ask for sensor status");
+ mSamsungFingerprint.sehRequest(6, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList<Byte> out) -> {
+ Slog.d("PHH-Enroll", "Result is " + retval);
+ for(int i=0; i<out.size(); i++) {
+ Slog.d("PHH-Enroll", "\t" + i + ":" + out.get(i));
+ }
+ } );
+ Slog.d("PHH-Enroll", "Samsung ask for sensor brightness value");
+ mSamsungFingerprint.sehRequest(32, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList<Byte> out) -> {
+ Slog.d("PHH-Enroll", "Result is " + retval);
+ for(int i=0; i<out.size(); i++) {
+ Slog.d("PHH-Enroll", "\t" + i + ":" + out.get(i));
+ }
+ } );
+
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed setting samsung3.0 fingerprint recognition", e);
+ }
+ return udfpsProps;
+ }
+
+ if(android.os.SystemProperties.get("ro.vendor.build.fingerprint").contains("ASUS_I006D")) {
+ int udfpsProps[] = new int[3];
+ udfpsProps[0] = displayRealSize.x/2;
+ udfpsProps[1] = 1741;
+ udfpsProps[2] = 110;
+ return udfpsProps;
+ }
+
+ return new int[0];
+ }
private FingerprintSensorPropertiesInternal getHidlFingerprintSensorProps(int sensorId,
@BiometricManager.Authenticators.Types int strength) {
// The existence of config_udfps_sensor_props indicates that the sensor is UDFPS.
- final int[] udfpsProps = getContext().getResources().getIntArray(
+ int[] udfpsProps = getContext().getResources().getIntArray(
com.android.internal.R.array.config_udfps_sensor_props);
// Non-empty workaroundLocations indicates that the sensor is SFPS.
final List<SensorLocationInternal> workaroundLocations =
getWorkaroundSensorProps(getContext());
- final boolean isUdfps = !ArrayUtils.isEmpty(udfpsProps);
+ boolean isUdfps = !ArrayUtils.isEmpty(udfpsProps);
+ if(!isUdfps) udfpsProps = dynamicUdfpsProps();
+ isUdfps = !ArrayUtils.isEmpty(udfpsProps);
+
+ if(udfpsProps.length > 0) {
+ Slog.d("PHH-Enroll", "Got udfps infos " + udfpsProps[0] + ", " + udfpsProps[1] + ", " + udfpsProps[2]);
+ }
// config_is_powerbutton_fps indicates whether device has a power button fingerprint sensor.
final boolean isPowerbuttonFps = getContext().getResources().getBoolean(
@@ -854,4 +1025,67 @@ public class AuthService extends SystemService {
componentInfo, resetLockoutRequiresHardwareAuthToken,
resetLockoutRequiresChallenge);
}
+
+ private static boolean samsungHasCmd(String cmd) {
+ try {
+ File f = new File("/sys/devices/virtual/sec/tsp/cmd_list");
+ if(!f.exists()) return false;
+
+ android.util.Log.d("PHH", "Managed to grab cmd list, checking...");
+ BufferedReader b = new BufferedReader(new FileReader(f));
+ String line = null;
+ while( (line = b.readLine()) != null) {
+ if(line.equals(cmd)) return true;
+ }
+ android.util.Log.d("PHH", "... nope");
+ return false;
+ } catch(Exception e) {
+ android.util.Log.d("PHH", "Failed reading cmd_list", e);
+ return false;
+ }
+ }
+
+ public static void samsungCmd(String cmd) {
+ try {
+ writeFile("/sys/devices/virtual/sec/tsp/cmd", cmd);
+
+ String status = readFile("/sys/devices/virtual/sec/tsp/cmd_status");
+ String ret = readFile("/sys/devices/virtual/sec/tsp/cmd_result");
+
+ android.util.Log.d("PHH", "Sending command " + cmd + " returned " + ret + ":" + status);
+ } catch(Exception e) {
+ android.util.Log.d("PHH", "Failed sending command " + cmd, e);
+ }
+ }
+
+ private static void writeFile(String path, String value) {
+ try {
+ PrintWriter writer = new PrintWriter(path, "UTF-8");
+ writer.println(value);
+ writer.close();
+ } catch(Exception e) {
+ android.util.Log.d("PHH", "Failed writing to " + path + ": " + value);
+ }
+ }
+
+ private static void writeFile(File file, String value) {
+ try {
+ PrintWriter writer = new PrintWriter(file, "UTF-8");
+ writer.println(value);
+ writer.close();
+ } catch(Exception e) {
+ android.util.Log.d("PHH", "Failed writing to " + file + ": " + value);
+ }
+ }
+
+ private static String readFile(String path) {
+ try {
+ File f = new File(path);
+
+ BufferedReader b = new BufferedReader(new FileReader(f));
+ return b.readLine();
+ } catch(Exception e) {
+ return null;
+ }
+ }
}
--
2.25.1

View File

@@ -0,0 +1,47 @@
From 43a802cfe0f99bb7735ae2280e3bc522a68c3442 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 3 Jan 2023 17:59:00 -0500
Subject: [PATCH 35/35] Always add HIDL fingerprint config (Galaxy A53 is
missing it on A12 vendor) -- but first enumerate AIDL
---
.../core/java/com/android/server/biometrics/AuthService.java | 4 ++--
.../biometrics/sensors/fingerprint/FingerprintService.java | 3 ++-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
index 063e3599d6cd..7d6f9a12057f 100644
--- a/services/core/java/com/android/server/biometrics/AuthService.java
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
@@ -652,11 +652,11 @@ public class AuthService extends SystemService {
final int firstApiLevel = SystemProperties.getInt(SYSPROP_FIRST_API_LEVEL, 0);
final int apiLevel = SystemProperties.getInt(SYSPROP_API_LEVEL, firstApiLevel);
String[] configStrings = mInjector.getConfiguration(getContext());
- if (configStrings.length == 0 && apiLevel <= Build.VERSION_CODES.R) {
+ if (configStrings.length == 0) {
// For backwards compatibility with R where biometrics could work without being
// configured in config_biometric_sensors. In the absence of a vendor provided
// configuration, we assume the weakest biometric strength (i.e. convenience).
- Slog.w(TAG, "Found R vendor partition without config_biometric_sensors");
+ Slog.w(TAG, "Found vendor partition without config_biometric_sensors");
configStrings = generateRSdkCompatibleConfiguration();
}
hidlConfigs = new SensorConfig[configStrings.length];
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
index 94b67cedf86c..9468f5f91c24 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
@@ -905,8 +905,9 @@ public class FingerprintService extends SystemService {
final Handler handler = new Handler(thread.getLooper());
handler.post(() -> {
- addHidlProviders(hidlSensors);
addAidlProviders();
+ if(mServiceProviders.isEmpty())
+ addHidlProviders(hidlSensors);
final IBiometricService biometricService = IBiometricService.Stub.asInterface(
ServiceManager.getService(Context.BIOMETRIC_SERVICE));
--
2.25.1

View File

@@ -1,7 +1,7 @@
From 1cd9026a5662a35e1b6181baf7b02cfa9f8a0570 Mon Sep 17 00:00:00 2001
From b0bf70b947ea0a7090490f08804932efa0632ce7 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 14 Aug 2019 23:37:10 +0200
Subject: [PATCH 1/8] On Samsung, we need to send a hack-message to HAL to get
Subject: [PATCH 1/9] On Samsung, we need to send a hack-message to HAL to get
all Sensors
Change-Id: Id6a1fa48340de61c418493668e9abd22c2599376

View File

@@ -1,7 +1,7 @@
From 448c8549bc90e6738b68c50d2318a8cca7dd1db0 Mon Sep 17 00:00:00 2001
From 9ef33b3c1b2fbd9049e232de2e2b9b66d83bdef9 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 22 Oct 2020 23:22:46 +0200
Subject: [PATCH 2/8] Matching an input with a display uses uniqueId
Subject: [PATCH 2/9] Matching an input with a display uses uniqueId
Not all devices have a `location`, notably bluetooth devices.
However, we might still want to associate them with a screen,
@@ -15,10 +15,10 @@ Change-Id: Ifcbc8329d54386f58e013270d9888316c0f516b6
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/services/inputflinger/reader/InputDevice.cpp b/services/inputflinger/reader/InputDevice.cpp
index ba5083bec3..72f824110b 100644
index 989700f6cf..e45222103b 100644
--- a/services/inputflinger/reader/InputDevice.cpp
+++ b/services/inputflinger/reader/InputDevice.cpp
@@ -304,7 +304,10 @@ void InputDevice::configure(nsecs_t when, const InputReaderConfiguration* config
@@ -309,7 +309,10 @@ void InputDevice::configure(nsecs_t when, const InputReaderConfiguration* config
mAssociatedDisplayUniqueId = std::nullopt;
mAssociatedViewport = std::nullopt;
// Find the display port that corresponds to the current input port.

View File

@@ -1,7 +1,7 @@
From 6d0350654547eca97cc4b05ed8b4f03f9b5fc215 Mon Sep 17 00:00:00 2001
From b294852aff716e1ba0b23fdd1fc9cc3fd904bd44 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 5 Jan 2021 23:44:00 +0100
Subject: [PATCH 3/8] unshared_oob didn't exist in O/P, so detect its supported
Subject: [PATCH 3/9] unshared_oob didn't exist in O/P, so detect its supported
based on vndk version
---

View File

@@ -1,7 +1,7 @@
From 6fca75b0d3125be0d0a1edc9d7aedf755b681e63 Mon Sep 17 00:00:00 2001
From 28938c96830fccd9859008daccffaa055e5ad6c9 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 31 Mar 2021 23:36:03 +0200
Subject: [PATCH 4/8] Remove Samsung system permission on sensors
Subject: [PATCH 4/9] Remove Samsung system permission on sensors
---
libs/sensor/Sensor.cpp | 1 +

View File

@@ -1,7 +1,7 @@
From 884ffbeb725f8d5de1fb26ceb0fad85e97b20e94 Mon Sep 17 00:00:00 2001
From 6f13ea29cd87ce969c407210699b4f5840589d4c Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 12 Dec 2021 08:45:36 -0500
Subject: [PATCH 5/8] Mark accelerometer input as sensor exclusively if there
Subject: [PATCH 5/9] Mark accelerometer input as sensor exclusively if there
are ABS axis
The reason this is needed is that on -fucked up- Xiami Mi A2 Lite and

View File

@@ -1,7 +1,7 @@
From b4ed1474579b4f673f095542de7303460d968f0a Mon Sep 17 00:00:00 2001
From 6162837f8581d23e42b19d974e0be1191b419b99 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 27 Dec 2021 18:00:43 -0500
Subject: [PATCH 6/8] powermanager: Add support Samsung miscpower HAL
Subject: [PATCH 6/9] powermanager: Add support Samsung miscpower HAL
Several various configurations need to be supported:
- Android Pie vendors have a android.hardware.power HIDL default + "miscpower"

View File

@@ -1,7 +1,7 @@
From 0d9755d3ea258834a6475c19fcf4bf40575a63bd Mon Sep 17 00:00:00 2001
From d6e24531f939d76dc41dd96d52e7182f6e10ddc0 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 12 Jan 2022 04:07:34 -0500
Subject: [PATCH 7/8] Fix loading power hidl v1.0
Subject: [PATCH 7/9] Fix loading power hidl v1.0
Change-Id: Ife20a98d2a11c79c7b42f359f30c28e2dede1f25
---

View File

@@ -1,7 +1,7 @@
From 2c4b374b4b9a742fdb743ff9e96f03d4d12bd69d Mon Sep 17 00:00:00 2001
From da180a5351c4c1ebed64cab4ed570b45003d91ad Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Fri, 25 Mar 2022 05:37:56 -0400
Subject: [PATCH 8/8] MIUI13 devices hide their vibrator HAL behind non-default
Subject: [PATCH 8/9] MIUI13 devices hide their vibrator HAL behind non-default
name: "vibratorfeature"
---

View File

@@ -0,0 +1,282 @@
From ea9c3fdda6210368cd74646ab341902c743840de Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 18 Dec 2022 18:17:30 -0500
Subject: [PATCH 9/9] FOD support for Samsung and Asus
---
libs/gui/BLASTBufferQueue.cpp | 20 ++++++++++++++--
libs/ui/Gralloc2.cpp | 1 -
libs/ui/Gralloc3.cpp | 1 -
libs/ui/Gralloc4.cpp | 1 -
services/surfaceflinger/BufferQueueLayer.cpp | 1 +
.../CompositionEngine/src/OutputLayer.cpp | 24 +++++++++++++++++++
.../DisplayHardware/AidlComposerHal.cpp | 7 ++++++
.../DisplayHardware/AidlComposerHal.h | 2 ++
.../DisplayHardware/ComposerHal.h | 3 +++
.../surfaceflinger/DisplayHardware/HWC2.cpp | 8 +++++++
.../surfaceflinger/DisplayHardware/HWC2.h | 5 ++++
.../DisplayHardware/HidlComposerHal.cpp | 7 ++++++
.../DisplayHardware/HidlComposerHal.h | 2 ++
13 files changed, 77 insertions(+), 5 deletions(-)
diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp
index a51bbb1553..81f2de0025 100644
--- a/libs/gui/BLASTBufferQueue.cpp
+++ b/libs/gui/BLASTBufferQueue.cpp
@@ -33,11 +33,20 @@
#include <utils/Trace.h>
#include <private/gui/ComposerService.h>
+#include <cutils/properties.h>
#include <chrono>
using namespace std::chrono_literals;
+static bool sCheckedProps = false;
+static bool sSamsungFod = false;
+static void init_fod_props() {
+ if(sCheckedProps) return;
+ sCheckedProps = true;
+ sSamsungFod = property_get_bool("persist.sys.phh.fod.samsung", false);
+}
+
namespace {
inline const char* boolToString(bool b) {
return b ? "true" : "false";
@@ -147,9 +156,16 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name, bool updateDestinati
// safe default, most producers are expected to override this
mProducer->setMaxDequeuedBufferCount(2);
+ uint64_t usage = GraphicBuffer::USAGE_HW_COMPOSER |
+ GraphicBuffer::USAGE_HW_TEXTURE;
+
+ init_fod_props();
+ if(sSamsungFod && name.find("SurfaceView[UdfpsControllerOverlay]") != std::string::npos) {
+ usage |= 0x400000000LL;
+ }
+
mBufferItemConsumer = new BLASTBufferItemConsumer(mConsumer,
- GraphicBuffer::USAGE_HW_COMPOSER |
- GraphicBuffer::USAGE_HW_TEXTURE,
+ usage,
1, false, this);
static int32_t id = 0;
mName = name + "#" + std::to_string(id);
diff --git a/libs/ui/Gralloc2.cpp b/libs/ui/Gralloc2.cpp
index 4e7fd7ca29..a358f78528 100644
--- a/libs/ui/Gralloc2.cpp
+++ b/libs/ui/Gralloc2.cpp
@@ -115,7 +115,6 @@ status_t Gralloc2Mapper::validateBufferDescriptorInfo(
if (descriptorInfo->usage & ~validUsageBits) {
ALOGE("buffer descriptor contains invalid usage bits 0x%" PRIx64,
descriptorInfo->usage & ~validUsageBits);
- return BAD_VALUE;
}
// Gralloc2 implementations never understand non-BLOB with GPU_DATA_BUFFER
diff --git a/libs/ui/Gralloc3.cpp b/libs/ui/Gralloc3.cpp
index 194cbdf161..661ecc62a2 100644
--- a/libs/ui/Gralloc3.cpp
+++ b/libs/ui/Gralloc3.cpp
@@ -106,7 +106,6 @@ status_t Gralloc3Mapper::validateBufferDescriptorInfo(
if (descriptorInfo->usage & ~validUsageBits) {
ALOGE("buffer descriptor contains invalid usage bits 0x%" PRIx64,
descriptorInfo->usage & ~validUsageBits);
- return BAD_VALUE;
}
// Gralloc3 implementations never understand non-BLOB with GPU_DATA_BUFFER
diff --git a/libs/ui/Gralloc4.cpp b/libs/ui/Gralloc4.cpp
index 63f7d31b05..562e383919 100644
--- a/libs/ui/Gralloc4.cpp
+++ b/libs/ui/Gralloc4.cpp
@@ -127,7 +127,6 @@ static status_t validateBufferDescriptorInfo(IMapper::BufferDescriptorInfo* desc
if (descriptorInfo->usage & ~validUsageBits) {
ALOGE("buffer descriptor contains invalid usage bits 0x%" PRIx64,
descriptorInfo->usage & ~validUsageBits);
- return BAD_VALUE;
}
// Combinations that are only allowed with gralloc 4.1.
diff --git a/services/surfaceflinger/BufferQueueLayer.cpp b/services/surfaceflinger/BufferQueueLayer.cpp
index bee4de32a6..4992b8374d 100644
--- a/services/surfaceflinger/BufferQueueLayer.cpp
+++ b/services/surfaceflinger/BufferQueueLayer.cpp
@@ -472,6 +472,7 @@ status_t BufferQueueLayer::setDefaultBufferProperties(uint32_t w, uint32_t h, Pi
setDefaultBufferSize(w, h);
mConsumer->setDefaultBufferFormat(format);
mConsumer->setConsumerUsageBits(getEffectiveUsage(0));
+ ALOGE("bufferqueuelayer -- name %s", mName.c_str());
return NO_ERROR;
}
diff --git a/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp b/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
index 1bb9d0eb63..3960808d49 100644
--- a/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
@@ -27,6 +27,7 @@
#include "system/graphics-base-v1.0.h"
#include <ui/DataspaceUtils.h>
+#include <cutils/properties.h>
// TODO(b/129481165): remove the #pragma below and fix conversion issues
#pragma clang diagnostic push
@@ -37,6 +38,9 @@
// TODO(b/129481165): remove the #pragma below and fix conversion issues
#pragma clang diagnostic pop // ignored "-Wconversion"
+static bool sCheckedProps = false;
+static bool sAsusFod = false;
+
using aidl::android::hardware::graphics::composer3::Composition;
namespace android::compositionengine {
@@ -425,6 +429,26 @@ void OutputLayer::writeOutputDependentGeometryStateToHWC(HWC2::Layer* hwcLayer,
->getHeight()));
}
+ if(!sCheckedProps) {
+ sCheckedProps = true;
+ sAsusFod = property_get_bool("persist.sys.phh.fod.asus", false);
+ }
+
+ if (strstr(getLayerFE().getDebugName(), "UdfpsControllerOverlay#") != nullptr) {
+ if (sAsusFod) {
+ if (auto error = hwcLayer->setLayerClass(5); error != hal::Error::NONE) {
+ ALOGE("Failed setting Asus layer class");
+ }
+ }
+ }
+ if (strstr(getLayerFE().getDebugName(), "SurfaceView[UdfpsControllerOverlay](BLAST)#") != nullptr) {
+ if (sAsusFod) {
+ if (auto error = hwcLayer->setLayerClass(4); error != hal::Error::NONE) {
+ ALOGE("Failed setting Asus layer class");
+ }
+ }
+ }
+
ALOGV("Writing display frame [%d, %d, %d, %d]", displayFrame.left, displayFrame.top,
displayFrame.right, displayFrame.bottom);
diff --git a/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp b/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp
index 79dcd159d3..922bd8c364 100644
--- a/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp
+++ b/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp
@@ -1126,5 +1126,12 @@ Error AidlComposer::getPhysicalDisplayOrientation(Display displayId,
return Error::NONE;
}
+Error AidlComposer::setLayerClass(Display display, Layer layer, uint32_t layerClass) {
+ (void) display;
+ (void) layer;
+ (void) layerClass;
+ return Error::NONE;
+}
+
} // namespace Hwc2
} // namespace android
diff --git a/services/surfaceflinger/DisplayHardware/AidlComposerHal.h b/services/surfaceflinger/DisplayHardware/AidlComposerHal.h
index 18d2242c7e..8ebca826a4 100644
--- a/services/surfaceflinger/DisplayHardware/AidlComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/AidlComposerHal.h
@@ -227,6 +227,8 @@ public:
Error getPhysicalDisplayOrientation(Display displayId,
AidlTransform* outDisplayOrientation) override;
+ // Proprietary extensions
+ Error setLayerClass(Display display, Layer layer, uint32_t layerClass) override;
private:
// Many public functions above simply write a command into the command
// queue to batch the calls. validateDisplay and presentDisplay will call
diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.h b/services/surfaceflinger/DisplayHardware/ComposerHal.h
index d266d942fb..b81d01e6d8 100644
--- a/services/surfaceflinger/DisplayHardware/ComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/ComposerHal.h
@@ -281,6 +281,9 @@ public:
virtual Error setIdleTimerEnabled(Display displayId, std::chrono::milliseconds timeout) = 0;
virtual Error getPhysicalDisplayOrientation(Display displayId,
AidlTransform* outDisplayOrientation) = 0;
+
+ // Proprietary extensions
+ virtual Error setLayerClass(Display display, Layer layer, uint32_t layerClass) = 0;
};
} // namespace Hwc2
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp
index c52e96d146..82f60516ae 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp
@@ -988,6 +988,14 @@ Error Layer::setBlockingRegion(const Region& region) {
return static_cast<Error>(intError);
}
+Error Layer::setLayerClass(uint32_t layerClass) {
+ if (CC_UNLIKELY(!mDisplay)) {
+ return Error::BAD_DISPLAY;
+ }
+ auto intError = mComposer.setLayerClass(mDisplay->getId(), mId, layerClass);
+ return static_cast<Error>(intError);
+}
+
} // namespace impl
} // namespace HWC2
} // namespace android
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.h b/services/surfaceflinger/DisplayHardware/HWC2.h
index 24aef9b73c..138d14456c 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.h
+++ b/services/surfaceflinger/DisplayHardware/HWC2.h
@@ -333,6 +333,9 @@ public:
// AIDL HAL
[[nodiscard]] virtual hal::Error setBrightness(float brightness) = 0;
[[nodiscard]] virtual hal::Error setBlockingRegion(const android::Region& region) = 0;
+
+ // Proprietary HAL
+ [[nodiscard]] virtual hal::Error setLayerClass(uint32_t layerClass) = 0;
};
namespace impl {
@@ -382,6 +385,8 @@ public:
hal::Error setBrightness(float brightness) override;
hal::Error setBlockingRegion(const android::Region& region) override;
+ // Proprietary HAL
+ hal::Error setLayerClass(uint32_t layerClass) override;
private:
// These are references to data owned by HWC2::Device, which will outlive
// this HWC2::Layer, so these references are guaranteed to be valid for
diff --git a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
index 2597ae6091..12b36f321e 100644
--- a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
+++ b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
@@ -1345,6 +1345,13 @@ Error HidlComposer::getPhysicalDisplayOrientation(Display, AidlTransform*) {
"OptionalFeature::PhysicalDisplayOrientation is not supported on HIDL");
}
+Error HidlComposer::setLayerClass(Display display, Layer layer, uint32_t layerClass) {
+ mWriter.selectDisplay(display);
+ mWriter.selectLayer(layer);
+ mWriter.vendor800_1(layerClass);
+ return Error::NONE;
+}
+
void HidlComposer::registerCallback(ComposerCallback& callback) {
const bool vsyncSwitchingSupported =
isSupported(Hwc2::Composer::OptionalFeature::RefreshRateSwitching);
diff --git a/services/surfaceflinger/DisplayHardware/HidlComposerHal.h b/services/surfaceflinger/DisplayHardware/HidlComposerHal.h
index d0d3c2e6d7..c40986fae9 100644
--- a/services/surfaceflinger/DisplayHardware/HidlComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/HidlComposerHal.h
@@ -338,6 +338,8 @@ public:
Error getPhysicalDisplayOrientation(Display displayId,
AidlTransform* outDisplayOrientation) override;
+ // Proprietary extensions
+ Error setLayerClass(Display display, Layer layer, uint32_t layerClass) override;
private:
class CommandWriter : public CommandWriterBase {
public:
--
2.25.1

View File

@@ -1,7 +1,7 @@
From d840969544f6ac3822ce444a8c1ff48ae30523ea Mon Sep 17 00:00:00 2001
From 766497aee0d2e92795721d9b50c0b4f055e97f68 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Mon, 5 Sep 2022 14:02:37 -0400
Subject: [PATCH 1/6] SubscriptionController: Do not override default calling
Subject: [PATCH 1/7] SubscriptionController: Do not override default calling
account from third-party apps
When the user has selected a calling account from a third-party app as
@@ -18,10 +18,10 @@ Change-Id: Iccab64e9b3b3ab4773bd8944d47c2006f229d472
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
index 7e762d7af0..f2bff8b15f 100644
index ff34cbe2cc..a879a66f34 100644
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
@@ -2846,7 +2846,14 @@ public class SubscriptionController extends ISub.Stub {
@@ -2858,7 +2858,14 @@ public class SubscriptionController extends ISub.Stub {
PhoneAccountHandle currentHandle = telecomManager.getUserSelectedOutgoingPhoneAccount();
logd("[setDefaultVoiceSubId] current phoneAccountHandle=" + currentHandle);

View File

@@ -1,7 +1,7 @@
From 406506e3a8df83f592f7dc34d27ed074917ffef1 Mon Sep 17 00:00:00 2001
From 532d6ca144dfd94347de084e00334d4172127ee7 Mon Sep 17 00:00:00 2001
From: Artem Borisov <dedsa2002@gmail.com>
Date: Sat, 10 Nov 2018 17:19:17 +0000
Subject: [PATCH 2/6] Telephony: Don not call onUssdRelease for Huawei RIL
Subject: [PATCH 2/7] Telephony: Don not call onUssdRelease for Huawei RIL
Huawei RIL doesn't seem to work properly with USSD_MODE_NW_RELEASE,
always releasing USSD when it should be finished instead.

View File

@@ -1,7 +1,7 @@
From 85e87b4870db60bbf2548602df0195b3008e8ee8 Mon Sep 17 00:00:00 2001
From 7826023a318e556b7ad4516cf0a942389269d119 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 6 Dec 2021 16:28:22 -0500
Subject: [PATCH 3/6] Fix baseband being too long to fit into a 91 chars
Subject: [PATCH 3/7] Fix baseband being too long to fit into a 91 chars
property, preventing telephony subsystem from starting
Change-Id: I1762e4a8cc137626be89f350229d6be162bdaf57

View File

@@ -1,7 +1,7 @@
From c2731d2e7e1b32628ce9b7fb7d4201dc84a7bfd8 Mon Sep 17 00:00:00 2001
From d7a177e583b4b1680b09ff87bbe262bff8590cdb Mon Sep 17 00:00:00 2001
From: ironydelerium <42721860+ironydelerium@users.noreply.github.com>
Date: Fri, 31 Dec 2021 02:20:28 -0800
Subject: [PATCH 4/6] Reintroduce 'public void
Subject: [PATCH 4/7] Reintroduce 'public void
TelephonyMetrics.writeRilSendSms(int, int, int, int)'. (#8)
The MediaTek IMS package for Android Q, at the very least (likely for the rest, too)

View File

@@ -1,7 +1,7 @@
From 7a8573a733734e6d8cb627078ae28a179bcea7d5 Mon Sep 17 00:00:00 2001
From fb307d91da795de9de3804f5b5f4f57bbd2e061f Mon Sep 17 00:00:00 2001
From: Raphael Mounier <mounierr07@gmail.com>
Date: Thu, 6 Oct 2022 08:35:38 +0200
Subject: [PATCH 5/6] Fix signalstrength for huawei kirin (hi6250, hi3670)
Subject: [PATCH 5/7] Fix signalstrength for huawei kirin (hi6250, hi3670)
The RILUtils.convertHalSignalStrength function does not work correctly under Huawei hi6250 and hi3660 platform. We have therefore replaced this function with a new one specifically for this Kirin platform.
@@ -16,10 +16,10 @@ The RILUtils.convertHalSignalStrength function does not work correctly under Hua
2 files changed, 136 insertions(+), 4 deletions(-)
diff --git a/src/java/com/android/internal/telephony/RIL.java b/src/java/com/android/internal/telephony/RIL.java
index 8b94aec967..979ff1ec29 100644
index 70431f6a0c..ffb9b4a71c 100644
--- a/src/java/com/android/internal/telephony/RIL.java
+++ b/src/java/com/android/internal/telephony/RIL.java
@@ -5914,6 +5914,125 @@ public class RIL extends BaseCommands implements CommandsInterface {
@@ -5940,6 +5940,125 @@ public class RIL extends BaseCommands implements CommandsInterface {
new CellSignalStrengthNr());
}
@@ -146,7 +146,7 @@ index 8b94aec967..979ff1ec29 100644
* Get the HAL version.
*
diff --git a/src/java/com/android/internal/telephony/RadioIndication.java b/src/java/com/android/internal/telephony/RadioIndication.java
index c7244be82e..5df3f99896 100644
index d947d53611..b74103f594 100644
--- a/src/java/com/android/internal/telephony/RadioIndication.java
+++ b/src/java/com/android/internal/telephony/RadioIndication.java
@@ -241,13 +241,26 @@ public class RadioIndication extends IRadioIndication.Stub {
@@ -162,21 +162,21 @@ index c7244be82e..5df3f99896 100644
- SignalStrength ss = mRil.fixupSignalStrength10(ssInitial);
// Note this is set to "verbose" because it happens frequently
- if (RIL.RILJ_LOGV) mRil.unsljLogvRet(RIL_UNSOL_SIGNAL_STRENGTH, ss);
+ if (RIL.RILJ_LOGV) mRil.unsljLogvRet(RIL_UNSOL_SIGNAL_STRENGTH, signalStrength);
- if (mRil.isLogvOrTrace()) mRil.unsljLogvRet(RIL_UNSOL_SIGNAL_STRENGTH, ss);
+ if (mRil.isLogvOrTrace()) mRil.unsljLogvRet(RIL_UNSOL_SIGNAL_STRENGTH, signalStrength);
+
+ // Fix signalStrength for Huawei
+ String hardware = android.os.SystemProperties.get("ro.hardware", "");
+ // Fix signalStrength for Huawei
+ String hardware = android.os.SystemProperties.get("ro.hardware", "");
+ if(hardware.contains("hi3660") || hardware.contains("hi6250") || hardware.contains("hi3670") || hardware.contains("kirin"))
+ {
+ if (RIL.RILJ_LOGV) mRil.riljLog("currentSignalStrength Found Huawei device");
+ ss = mRil.fixupSignalStrengthHuawei(signalStrength);
+ }
+ else
+ {
+ SignalStrength ssInitial = RILUtils.convertHalSignalStrength(signalStrength);
+ ss = mRil.fixupSignalStrength10(ssInitial);
+ }
+ {
+ if (RIL.RILJ_LOGV) mRil.riljLog("currentSignalStrength Found Huawei device");
+ ss = mRil.fixupSignalStrengthHuawei(signalStrength);
+ }
+ else
+ {
+ SignalStrength ssInitial = RILUtils.convertHalSignalStrength(signalStrength);
+ ss = mRil.fixupSignalStrength10(ssInitial);
+ }
if (mRil.mSignalStrengthRegistrant != null) {
mRil.mSignalStrengthRegistrant.notifyRegistrant(new AsyncResult (null, ss, null));

View File

@@ -1,7 +1,7 @@
From 7c87dcbab602de571b3bb3ada764eeac4e1ac623 Mon Sep 17 00:00:00 2001
From 7ae9986996a870dfd203fcc259dc253a7e6916c8 Mon Sep 17 00:00:00 2001
From: corneranchu <corneranchu@gmail.com>
Date: Sat, 1 Oct 2022 01:49:58 +0000
Subject: [PATCH 6/6] telephony: forward-port support for forceCognitive
Subject: [PATCH 6/7] telephony: forward-port support for forceCognitive
* This is needed on some MTK devices. Android 10 refactored some code,
so now the "non-persistent/cognitive" filter is relocated to RIL and

View File

@@ -0,0 +1,236 @@
From 3b79555e87859256a2891be83cfb5051701bf6a1 Mon Sep 17 00:00:00 2001
From: Raphael Mounier <mounierr07@gmail.com>
Date: Tue, 22 Nov 2022 06:54:35 +0100
Subject: [PATCH 7/7] Fix 3G signalstrength for huawei kirin (hi6250, hi3670)
The RILUtils.convertHalSignalStrength function does not work correctly under Huawei hi6250 and hi3660 platform. We have therefore replaced this function with a new one specifically for this Kirin platform.
23/11/2021 : Initial release for Android 11
06/10/2022 : Android 13 release
21/11/2022 : Fix 3G signal strength under android 13
---
.../com/android/internal/telephony/RIL.java | 191 +++++++++---------
1 file changed, 98 insertions(+), 93 deletions(-)
diff --git a/src/java/com/android/internal/telephony/RIL.java b/src/java/com/android/internal/telephony/RIL.java
index ffb9b4a71c..182b335656 100644
--- a/src/java/com/android/internal/telephony/RIL.java
+++ b/src/java/com/android/internal/telephony/RIL.java
@@ -5949,114 +5949,119 @@ public class RIL extends BaseCommands implements CommandsInterface {
int gsmSignalStrength = signalStrength.gw.signalStrength;
int gsmBitErrorRate = signalStrength.gw.bitErrorRate;
int gsmTimingAdvance = signalStrength.gw.timingAdvance;
- int mWcdmaRscp = 0;
- int mWcdmaEcio = 0;
+ int mWcdmaRscp = CellInfo.UNAVAILABLE;
+ int mWcdmaEcio = CellInfo.UNAVAILABLE;
+ int mWcdmaRssi = CellInfo.UNAVAILABLE;
+ int mWcdmabErrorRate = CellInfo.UNAVAILABLE;
int cdmaDbm = signalStrength.cdma.dbm;
int cdmaEcio = signalStrength.cdma.ecio;
int evdoDbm = signalStrength.evdo.dbm;
int evdoEcio = signalStrength.evdo.ecio;
int evdoSnr = signalStrength.evdo.signalNoiseRatio;
int lteSignalStrength = signalStrength.lte.signalStrength;
- int lteRsrp = signalStrength.lte.rsrp;
+ int lteRsrp = signalStrength.lte.rsrp; //4G signal
int lteRsrq = signalStrength.lte.rsrq;
int lteRssnr = signalStrength.lte.rssnr;
int lteCqi = signalStrength.lte.cqi;
int lteTimingAdvance = signalStrength.lte.timingAdvance;
int mGsm = 0;
int mRat = 0;
+ //int tdScdmaDbm = signalStrength.tdScdma.dbm; // TD-SCDMA is the 3G standard developed for and used by China Mobile
- //Calcul level with Rssnr, Rsrq, Rsrp value - so specify KEY_PARAMETERS_USED_FOR_LTE_SIGNAL_BAR_INT (parameters_used_for_lte_signal_bar_int) to use this 3 values
- //RSRP = 1 << 0
- //RSRQ = 1 << 1
- //RSSNR = 1 << 2
- //
- if (lteRsrp != 0) { // LTE
- // Nothing to DO
- } else if (gsmSignalStrength == 0 && lteRsrp == 0) { // 3G
- lteRsrp = (mWcdmaRscp & 0xFF) - 256;
- lteRsrq = (mWcdmaEcio & 0xFF) - 256;
- if (lteRsrp > -20) { // None or Unknown
- lteRssnr = -200;
- } else if (lteRsrp >= -85) { // Great
- lteRssnr = 300;
- } else if (lteRsrp >= -95) { // Good
- lteRssnr = 129;
- } else if (lteRsrp >= -105) { // Moderate
- lteRssnr = 44;
- } else if (lteRsrp >= -115) { // Poor
- lteRssnr = 9;
- } else if (lteRsrp >= -140) { // None or Unknown
- lteRssnr = -200;
- }
- } else if (mWcdmaRscp == 0 && lteRsrp == 0) { // 2G
- lteRsrp = (gsmSignalStrength & 0xFF) - 256;
- if (lteRsrp > -20) { // None or Unknown
- lteRsrq = -21;
- lteRssnr = -200;
- } else if (lteRsrp >= -85) { // Great
- lteRsrq = -3;
- lteRssnr = 300;
- } else if (lteRsrp >= -95) { // Good
- lteRsrq = -7;
- lteRssnr = 129;
- } else if (lteRsrp >= -105) { // Moderate
- lteRsrq = -12;
- lteRssnr = 44;
- } else if (lteRsrp >= -115) { // Poor
- lteRsrq = -17;
- lteRssnr = 9;
- } else if (lteRsrp >= -140) { // None or Unknown
- lteRsrq = -21;
- lteRssnr = -200;
- }
- }
-
-
- // 4G - LTE
- // .lte = {.signalStrength = 99, .rsrp = -104, .rsrq = -16, .rssnr = -4, .cqi = 2147483647, .timingAdvance = -1},
- // public CellSignalStrengthLte(int rssi, int rsrp, int rsrq, int rssnr, int cqi, int timingAdvance) {
- CellSignalStrengthLte lteStrength = new CellSignalStrengthLte(SignalStrength.INVALID,
- lteRsrp,
- lteRsrq,
- lteRssnr,
- lteCqi,
- lteTimingAdvance);
-
- // GSM
- // .gw = {.signalStrength = -91, .bitErrorRate = -1, .timingAdvance = 0}
- // public CellSignalStrengthGsm(int rssi, int ber, int ta) {
- // rssi in dBm [-113, -51] or UNAVAILABLE
- // bit error rate (0-7, 99) TS 27.007 8.5 or UNAVAILABLE
- CellSignalStrengthGsm gsmStrength = new CellSignalStrengthGsm(gsmSignalStrength,
- gsmBitErrorRate,
- gsmTimingAdvance);
-
- if (RILJ_LOGD) {
- riljLog("Huawei signal : LTE dbm : " + String.valueOf(lteStrength.getDbm()) +
- ", level : " + String.valueOf(lteStrength.getLevel()) +
- ", Rsrp : " + String.valueOf(lteStrength.getRsrp()) +
- ", Rsrq : " + String.valueOf(lteStrength.getRsrq()) +
- ", Rssi : " + String.valueOf(lteStrength.getRssi()) +
- ", Rssnr : " + String.valueOf(lteStrength.getRssnr()));
- riljLog("Huawei signal : GSM dbm : " + String.valueOf(gsmStrength.getDbm()) +
- ", errorrate : " + String.valueOf(gsmStrength.getBitErrorRate()) +
- ", timingadvance : " + String.valueOf(gsmStrength.getTimingAdvance()));
- }
-
-
-
- // Perhaps add also gsm signalStrength
- return new SignalStrength(
- new CellSignalStrengthCdma(),
- gsmStrength,
- new CellSignalStrengthWcdma(),
- new CellSignalStrengthTdscdma(),
- lteStrength,
- new CellSignalStrengthNr());
-
- }
+ // 3G (UMTS) have a lot of protocol (WCDMA, TDSCDMA, CDMA, EVDO, CDMA-EVDO) - only WCDMA, TDSCDMA, CDMA on Android
+ // [UNSL]< UNSOL_SIGNAL_STRENGTH {
+ //.gw = {.signalStrength = -100, .bitErrorRate = -1, .timingAdvance = 0},
+ //.cdma = {.dbm = 0, .ecio = 0},
+ //.evdo = {.dbm = 32767, .ecio = -1, .signalNoiseRatio = 32767},
+ //.lte = {.signalStrength = 99, .rsrp = 2147483647, .rsrq = 0, .rssnr = 0, .cqi = 2147483647, .timingAdvance = -1},
+ //.tdScdma = {.rscp = 2147483647}} [PHONE0]
+ //public CellSignalStrengthWcdma(int rssi, int ber, int rscp, int ecno) {
+
+ CellSignalStrengthWcdma wcdmaStrength=null; // Europe use WCDMA norme
+ if ((lteSignalStrength!=SignalStrength.INVALID) && (lteRsrq==0) && (gsmSignalStrength!=0))
+ {
+ // 3G UMTS found - wcdma
+ mWcdmaRscp = CellInfo.UNAVAILABLE;
+ mWcdmaEcio = CellInfo.UNAVAILABLE;
+ mWcdmaRssi = gsmSignalStrength; // Just copy level gw to CDMA
+ mWcdmabErrorRate=gsmBitErrorRate;
+
+ // use rssi calcul method
+ wcdmaStrength = new CellSignalStrengthWcdma(mWcdmaRssi, mWcdmabErrorRate, mWcdmaRscp, mWcdmaEcio);
+ }
+ else
+ {
+ // 3G not present
+ wcdmaStrength = new CellSignalStrengthWcdma();
+ }
+
+
+ // 4G - LTE
+ // [UNSL]< UNSOL_SIGNAL_STRENGTH {
+ //.gw = {.signalStrength = 0, .bitErrorRate = -1, .timingAdvance = 0}, .cdma = {.dbm = 0, .ecio = 0},
+ //.evdo = {.dbm = 32767, .ecio = -1, .signalNoiseRatio = 32767},
+ //.lte = {.signalStrength = 99, .rsrp = -105, .rsrq = -12, .rssnr = -10, .cqi = 2147483647, .timingAdvance = -1},
+ //.tdScdma = {.rscp = 2147483647}} [PHONE0]
+ // public CellSignalStrengthLte(int rssi, int rsrp, int rsrq, int rssnr, int cqi, int timingAdvance) {
+
+ CellSignalStrengthLte lteStrength=null;
+ if ((lteSignalStrength!=SignalStrength.INVALID) && ( lteRsrp!=0) && (lteRsrq!=0) && (lteRssnr!=0))
+ {
+ lteStrength = new CellSignalStrengthLte(SignalStrength.INVALID,
+ lteRsrp,
+ lteRsrq,
+ lteRssnr,
+ lteCqi,
+ lteTimingAdvance);
+ }
+ else
+ {
+ // 4G-LTE not present
+ lteStrength = new CellSignalStrengthLte();
+ }
+
+
+ // GSM
+ // .gw = {.signalStrength = -91, .bitErrorRate = -1, .timingAdvance = 0}
+ // public CellSignalStrengthGsm(int rssi, int ber, int ta) {
+ // rssi in dBm [-113, -51] or UNAVAILABLE
+ // bit error rate (0-7, 99) TS 27.007 8.5 or UNAVAILABLE
+ CellSignalStrengthGsm gsmStrength = new CellSignalStrengthGsm(gsmSignalStrength,
+ gsmBitErrorRate,
+ gsmTimingAdvance);
+
+
+ if (RILJ_LOGD) {
+ riljLog("Huawei signal : LTE dbm : " + String.valueOf(lteStrength.getDbm()) +
+ ", level : " + String.valueOf(lteStrength.getLevel()) +
+ ", rsrp : " + String.valueOf(lteStrength.getRsrp()) +
+ ", rsrq : " + String.valueOf(lteStrength.getRsrq()) +
+ ", rssi : " + String.valueOf(lteStrength.getRssi()) +
+ ", rssnr : " + String.valueOf(lteStrength.getRssnr()));
+
+ riljLog("Huawei signal : WCDMA dbm : " + String.valueOf(wcdmaStrength.getDbm()) +
+ ", asulevel : " + String.valueOf(wcdmaStrength.getAsuLevel()) +
+ ", rssi : " + String.valueOf(wcdmaStrength.getRssi()) +
+ ", errorrate : " + String.valueOf(wcdmaStrength.getBitErrorRate()) +
+ ", rscp : " + String.valueOf(wcdmaStrength.getRscp()) +
+ ", ecno : " + String.valueOf(wcdmaStrength.getEcNo()));
+
+ riljLog("Huawei signal : GSM dbm : " + String.valueOf(gsmStrength.getDbm()) +
+ ", errorrate : " + String.valueOf(gsmStrength.getBitErrorRate()) +
+ ", timingadvance : " + String.valueOf(gsmStrength.getTimingAdvance()));
+ }
+
+ // Perhaps add also gsm signalStrength
+ return new SignalStrength(
+ new CellSignalStrengthCdma(),
+ gsmStrength,
+ wcdmaStrength,
+ new CellSignalStrengthTdscdma(),
+ lteStrength,
+ new CellSignalStrengthNr());
+ }
/**
--
2.25.1

View File

@@ -1,4 +1,4 @@
From 17d39de543bf4034bb9877a01b0a501aa7ebaf1d Mon Sep 17 00:00:00 2001
From 19bde18594e16f3186aa142b59a6f0af3e15c11f Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 14 Aug 2018 21:48:19 +0200
Subject: [PATCH 1/2] Act as usb device when there is no hal, but we believe we

View File

@@ -1,40 +1,47 @@
From cab0069178e3525d340c03525d1ef2f6b3094bc6 Mon Sep 17 00:00:00 2001
From cd73d5eb8518bb8f46540cbfa213949db3366fa9 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 2 May 2022 17:44:28 -0400
Subject: [PATCH 2/2] Ignore cancelled fingerprint events, they are expected,
plus add more fingerprint enroll logs
---
.../biometrics/fingerprint/FingerprintEnrollEnrolling.java | 3 +++
.../biometrics/fingerprint/FingerprintEnrollFindSensor.java | 1 +
2 files changed, 4 insertions(+)
.../biometrics/fingerprint/FingerprintEnrollEnrolling.java | 5 ++++-
.../biometrics/fingerprint/FingerprintEnrollFindSensor.java | 1 +
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
index de778bdf10..52b8604b00 100644
index d65c8c76ab..b7d6bd65f3 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -492,6 +492,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
@@ -749,6 +749,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
@Override
public void onEnrollmentError(int errMsgId, CharSequence errString) {
+ android.util.Log.e("PHH-Enroll", "heyo " + errMsgId + ", " + errString , new Exception());
+ if (errMsgId == 5) return;
+ android.util.Log.e("PHH-Enroll", "heyo " + errMsgId + ", " + errString , new Exception());
+ if (errMsgId == 5) return;
+
FingerprintErrorDialog.showErrorDialog(this, errMsgId);
stopIconAnimation();
if (!mCanAssumeUdfps) {
onCancelEnrollment(errMsgId);
}
@@ -1075,4 +1078,4 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
return SettingsEnums.DIALOG_FINGERPRINT_ICON_TOUCH;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
index b5782cd510..909c29f2c7 100644
index 20f8af65fa..e1a9f9a6dd 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
@@ -235,6 +235,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
@@ -276,6 +276,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
@Override
public void onEnrollmentError(int errMsgId, CharSequence errString) {
+ android.util.Log.e("PHH-Enroll", "heyo " + errMsgId + ", " + errString + ", " + mNextClicked, new Exception());
if (mNextClicked && errMsgId == FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
mNextClicked = false;
proceedToEnrolling(false /* cancelEnrollment */);
} else {
--
2.25.1

View File

@@ -1,4 +1,4 @@
From 29cbd9798ebec900adf442aae8e49aa33ec274bd Mon Sep 17 00:00:00 2001
From dcad1b16c4352152f9dc1a552c61d9e40dc556ae Mon Sep 17 00:00:00 2001
From: "tzu-hsien.huang" <tzu-hsien.huang@mediatek.com>
Date: Wed, 20 Jul 2022 15:12:01 +0800
Subject: [PATCH 1/6] Additionally check le_set_event_mask command resturn
@@ -24,7 +24,7 @@ Change-Id: I2b0cede7f47eecd2124a386e958773289eb6f11c
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/system/gd/hci/controller.cc b/system/gd/hci/controller.cc
index da5986fcb7..8be21a20a3 100644
index 3827f83a91..221cd88883 100644
--- a/system/gd/hci/controller.cc
+++ b/system/gd/hci/controller.cc
@@ -540,7 +540,7 @@ struct Controller::impl {

View File

@@ -1,67 +0,0 @@
From 372796a9b26af8396c42591adc9c735c06892b5c Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 25 May 2020 21:25:12 +0200
Subject: [PATCH 2/6] Add persist.sys.phh.disable_a2dp_offload property to
force a2dp offload
---
system/btif/src/btif_av.cc | 7 ++++++-
system/stack/a2dp/a2dp_codec_config.cc | 9 +++++++--
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/system/btif/src/btif_av.cc b/system/btif/src/btif_av.cc
index 8ae8db8add..5e0bccb134 100644
--- a/system/btif/src/btif_av.cc
+++ b/system/btif/src/btif_av.cc
@@ -981,9 +981,14 @@ bt_status_t BtifAvSource::Init(
osi_property_get("ro.bluetooth.a2dp_offload.supported", value_sup, "false");
osi_property_get("persist.bluetooth.a2dp_offload.disabled", value_dis,
"false");
+ char value_phh[PROPERTY_VALUE_MAX] = {'\0'};
+ osi_property_get("persist.sys.phh.disable_a2dp_offload", value_phh, "false");
a2dp_offload_enabled_ =
(strcmp(value_sup, "true") == 0) && (strcmp(value_dis, "false") == 0);
- BTIF_TRACE_DEBUG("a2dp_offload.enable = %d", a2dp_offload_enabled_);
+ if(strcmp(value_phh, "true") == 0)
+ a2dp_offload_enabled_ = false;
+
+ LOG_ERROR("a2dp_offload.enable = %s", a2dp_offload_enabled_ ? "on" : "off");
callbacks_ = callbacks;
if (a2dp_offload_enabled_) {
diff --git a/system/stack/a2dp/a2dp_codec_config.cc b/system/stack/a2dp/a2dp_codec_config.cc
index 52e0f6fcb1..d3ac2b9365 100644
--- a/system/stack/a2dp/a2dp_codec_config.cc
+++ b/system/stack/a2dp/a2dp_codec_config.cc
@@ -557,13 +557,18 @@ bool A2dpCodecs::init() {
char* tok = NULL;
char* tmp_token = NULL;
bool offload_codec_support[BTAV_A2DP_CODEC_INDEX_MAX] = {false};
- char value_sup[PROPERTY_VALUE_MAX], value_dis[PROPERTY_VALUE_MAX];
+ char value_sup[PROPERTY_VALUE_MAX], value_dis[PROPERTY_VALUE_MAX], value_phh[PROPERTY_VALUE_MAX];
osi_property_get("ro.bluetooth.a2dp_offload.supported", value_sup, "false");
osi_property_get("persist.bluetooth.a2dp_offload.disabled", value_dis,
"false");
+ osi_property_get("persist.sys.phh.disable_a2dp_offload", value_phh, "false");
a2dp_offload_status =
(strcmp(value_sup, "true") == 0) && (strcmp(value_dis, "false") == 0);
+ if(strcmp(value_phh, "true") == 0)
+ a2dp_offload_status = false;
+
+ LOG_ERROR("Got a2dp offload status %s", a2dp_offload_status ? "on" : "off");
if (a2dp_offload_status) {
char value_cap[PROPERTY_VALUE_MAX];
@@ -652,7 +657,7 @@ bool A2dpCodecs::init() {
}
}
- return (!ordered_source_codecs_.empty() && !ordered_sink_codecs_.empty());
+ return (!ordered_source_codecs_.empty() && !ordered_sink_codecs_.empty()) && !a2dp_offload_status;
}
A2dpCodecConfig* A2dpCodecs::findSourceCodecConfig(
--
2.25.1

View File

@@ -1,7 +1,7 @@
From a9b8b7c86f5ec307c44b4fbe4de3fd3f223f77f7 Mon Sep 17 00:00:00 2001
From 3d5a4947f5dfb9e976edad36f871ea736976e0b8 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 24 Aug 2022 10:41:29 -0400
Subject: [PATCH 3/6] gd: hci: Ignore unexpected status events
Subject: [PATCH 2/6] gd: hci: Ignore unexpected status events
For some reason, on some old devices, the controller will report a
remote to support SNIFF_SUBRATING even when it does not. Just ignore the
@@ -13,7 +13,7 @@ Change-Id: Ifb9a65fd77f21d15a8dc1ced9240194d38218ef6
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/system/gd/hci/hci_layer.cc b/system/gd/hci/hci_layer.cc
index 57d7e55fff..b5a9d065be 100644
index bc7f8979ba..4090cfb36e 100644
--- a/system/gd/hci/hci_layer.cc
+++ b/system/gd/hci/hci_layer.cc
@@ -195,14 +195,13 @@ struct HciLayer::impl {

View File

@@ -1,7 +1,7 @@
From f33456723161bd07c435c62a16d3ae19c499c5c7 Mon Sep 17 00:00:00 2001
From 6edbbb2571aaca0bb647c2c7675458e831030859 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Wed, 24 Aug 2022 15:45:18 -0400
Subject: [PATCH 4/6] audio_hal_interface: Optionally use sysbta HAL
Subject: [PATCH 3/6] audio_hal_interface: Optionally use sysbta HAL
Required to support sysbta, our system-side bt audio implementation.
@@ -13,10 +13,10 @@ Change-Id: I59973e6ec84c5923be8a7c67b36b2e237f000860
3 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/system/audio_hal_interface/aidl/client_interface_aidl.cc b/system/audio_hal_interface/aidl/client_interface_aidl.cc
index 814c6c7796..a38b6da495 100644
index efdc469de4..3dd65b5394 100644
--- a/system/audio_hal_interface/aidl/client_interface_aidl.cc
+++ b/system/audio_hal_interface/aidl/client_interface_aidl.cc
@@ -55,7 +55,7 @@ BluetoothAudioClientInterface::BluetoothAudioClientInterface(
@@ -56,7 +56,7 @@ BluetoothAudioClientInterface::BluetoothAudioClientInterface(
bool BluetoothAudioClientInterface::is_aidl_available() {
auto service = AServiceManager_checkService(
@@ -25,7 +25,7 @@ index 814c6c7796..a38b6da495 100644
return (service != nullptr);
}
@@ -72,7 +72,7 @@ BluetoothAudioClientInterface::GetAudioCapabilities(SessionType session_type) {
@@ -73,7 +73,7 @@ BluetoothAudioClientInterface::GetAudioCapabilities(SessionType session_type) {
}
auto provider_factory = IBluetoothAudioProviderFactory::fromBinder(
::ndk::SpAIBinder(AServiceManager_getService(
@@ -34,7 +34,7 @@ index 814c6c7796..a38b6da495 100644
if (provider_factory == nullptr) {
LOG(ERROR) << __func__ << ", can't get capability from unknown factory";
@@ -100,7 +100,7 @@ void BluetoothAudioClientInterface::FetchAudioProvider() {
@@ -101,7 +101,7 @@ void BluetoothAudioClientInterface::FetchAudioProvider() {
}
auto provider_factory = IBluetoothAudioProviderFactory::fromBinder(
::ndk::SpAIBinder(AServiceManager_getService(
@@ -44,7 +44,7 @@ index 814c6c7796..a38b6da495 100644
if (provider_factory == nullptr) {
LOG(ERROR) << __func__ << ", can't get capability from unknown factory";
diff --git a/system/audio_hal_interface/aidl/client_interface_aidl.h b/system/audio_hal_interface/aidl/client_interface_aidl.h
index 87dd450997..36d5fa5e86 100644
index 17abefe8fe..07dd11266f 100644
--- a/system/audio_hal_interface/aidl/client_interface_aidl.h
+++ b/system/audio_hal_interface/aidl/client_interface_aidl.h
@@ -28,6 +28,7 @@
@@ -55,7 +55,7 @@ index 87dd450997..36d5fa5e86 100644
#define BLUETOOTH_AUDIO_HAL_PROP_DISABLED \
"persist.bluetooth.bluetooth_audio_hal.disabled"
@@ -115,6 +116,12 @@ class BluetoothAudioClientInterface {
@@ -117,6 +118,12 @@ class BluetoothAudioClientInterface {
// "android.hardware.bluetooth.audio.IBluetoothAudioProviderFactory/default";
static inline const std::string kDefaultAudioProviderFactoryInterface =
std::string() + IBluetoothAudioProviderFactory::descriptor + "/default";

View File

@@ -1,7 +1,7 @@
From 076360dab811912807739673ae8fd4d4a559f269 Mon Sep 17 00:00:00 2001
From b6a2f8949f5be232b779d77bf36de950f7363340 Mon Sep 17 00:00:00 2001
From: Alberto Ponces <ponces26@gmail.com>
Date: Thu, 17 Jun 2021 15:48:53 +0100
Subject: [PATCH 5/6] Add option to change eSCO Transport Unit Size
Subject: [PATCH 4/6] Add option to change eSCO Transport Unit Size
Fixes Bluetooth calls on some Samsung devices if set to 16.

View File

@@ -1,7 +1,7 @@
From 7665e4dfaf048902ca10a0d6b26ba1ac0a26d750 Mon Sep 17 00:00:00 2001
From 62ef4e9e0f4cd9351548d3f9cbbcc481a2e63fb1 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 17 Oct 2021 17:17:13 -0400
Subject: [PATCH 6/6] Don't abort when failing to get real-time priority
Subject: [PATCH 5/6] Don't abort when failing to get real-time priority
On some devices (like OP6), for unknown reason, trying to go to realtime
fails with EPERM.
@@ -19,7 +19,7 @@ Change-Id: Id25dac186628e933185bdfd640498004459b375a
4 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/system/btif/src/btif_a2dp_sink.cc b/system/btif/src/btif_a2dp_sink.cc
index 665965a3cb..d1f00ceed1 100644
index 9d52524b4b..95a129d2b5 100644
--- a/system/btif/src/btif_a2dp_sink.cc
+++ b/system/btif/src/btif_a2dp_sink.cc
@@ -197,7 +197,7 @@ bool btif_a2dp_sink_init() {

View File

@@ -0,0 +1,67 @@
From f5e0fe3541a56963e5cdaeb4d1f969a6c49f11b2 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn@cryptomilk.org>
Date: Sat, 12 Nov 2022 00:35:46 +0000
Subject: [PATCH 6/6] On Samsung devices, we need to tell Audio HAL if we're
running narrow band or wide band
Ported to Android 13.
Change-Id: I7802b7a29c017a2cd7018e82772183df1dfa0b89
---
.../com/android/bluetooth/hfp/HeadsetStateMachine.java | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java b/android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
index e431c43bde..82aa7c89e3 100644
--- a/android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
+++ b/android/app/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
@@ -145,6 +145,7 @@ public class HeadsetStateMachine extends StateMachine {
// Audio Parameters
private boolean mHasNrecEnabled = false;
private boolean mHasWbsEnabled = false;
+ private int mReportScoSampleRate = 0;
// AT Phone book keeps a group of states used by AT+CPBR commands
private final AtPhonebook mPhonebook;
// HSP specific
@@ -225,6 +226,7 @@ public class HeadsetStateMachine extends StateMachine {
}
mHasWbsEnabled = false;
mHasNrecEnabled = false;
+ mReportScoSampleRate = 0;
}
public void dump(StringBuilder sb) {
@@ -454,6 +456,7 @@ public class HeadsetStateMachine extends StateMachine {
mNeedDialingOutReply = false;
mHasWbsEnabled = false;
mHasNrecEnabled = false;
+ mReportScoSampleRate = 0;
broadcastStateTransitions();
// Remove the state machine for unbonded devices
if (mPrevState != null
@@ -1538,6 +1541,9 @@ public class HeadsetStateMachine extends StateMachine {
+ " hasNrecEnabled=" + mHasNrecEnabled
+ " hasWbsEnabled=" + mHasWbsEnabled);
am.setBluetoothHeadsetProperties(getCurrentDeviceName(), mHasNrecEnabled, mHasWbsEnabled);
+ if (mReportScoSampleRate > 0) {
+ am.setParameters("g_sco_samplerate=" + mReportScoSampleRate);
+ }
}
private String parseUnknownAt(String atString) {
@@ -1678,10 +1684,12 @@ public class HeadsetStateMachine extends StateMachine {
switch (wbsConfig) {
case HeadsetHalConstants.BTHF_WBS_YES:
mHasWbsEnabled = true;
+ mReportScoSampleRate = 16000;
break;
case HeadsetHalConstants.BTHF_WBS_NO:
case HeadsetHalConstants.BTHF_WBS_NONE:
mHasWbsEnabled = false;
+ mReportScoSampleRate = 8000;
break;
default:
Log.e(TAG, "processWBSEvent: unknown wbsConfig " + wbsConfig);
--
2.25.1

View File

@@ -1,7 +1,7 @@
From 0778d5951884c0c536da6e1e8174e37e9097c7f0 Mon Sep 17 00:00:00 2001
From 71162b2f1912d5c4cf628d225194dabeac51b86c Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 23 Feb 2022 17:37:47 -0500
Subject: [PATCH 01/14] Let system override ro.apex.updatable
Subject: [PATCH 01/15] Let system override ro.apex.updatable
APEX are broken because of a kernel bug in Android 10 devices
So we have system set ro.apex.updatable = false
@@ -13,7 +13,7 @@ So, ignore the override policy for this prop
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/init/property_service.cpp b/init/property_service.cpp
index 8db414a97..3bbd248ef 100644
index f14023f32..02fb8049b 100644
--- a/init/property_service.cpp
+++ b/init/property_service.cpp
@@ -727,8 +727,12 @@ static void LoadProperties(char* data, const char* filter, const char* filename,

View File

@@ -1,7 +1,7 @@
From ef95b0eb36c2a016e5902be0381d856bb50da561 Mon Sep 17 00:00:00 2001
From 3533e6d12361de6cc0a5b93a2a96e7dfc9634980 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 12 Sep 2019 13:05:37 +0200
Subject: [PATCH 02/14] If Vboot2 fails, fall-back to Vboot1
Subject: [PATCH 02/15] If Vboot2 fails, fall-back to Vboot1
Some devices, for instance Honor View 10, running Pie vendor declares
vbmeta in their device-tree, but doesn't have a vbmeta partition.

View File

@@ -1,7 +1,7 @@
From 7c2a6f1acbdaa5adbbe4b0452eb8035952132d0a Mon Sep 17 00:00:00 2001
From d6a1685452a436dac8e29290977fe4d6f31a12e5 Mon Sep 17 00:00:00 2001
From: Alberto Ponces <ponces26@gmail.com>
Date: Wed, 28 Sep 2022 17:04:03 +0100
Subject: [PATCH 03/14] Revert "Remove support for AVB 1.0."
Subject: [PATCH 03/15] Revert "Remove support for AVB 1.0."
This reverts commit 21ef2310eb1ef4e61117b8a63741f3a9577a20c9.

View File

@@ -1,7 +1,7 @@
From 39806644c86f4aec022482e2942fc91690b81290 Mon Sep 17 00:00:00 2001
From 11b2314a589ff4dec60edaa9b21327c36e22d2bf Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 18 Oct 2020 18:14:47 +0200
Subject: [PATCH 04/14] Don't abandon creating property tree if there is a
Subject: [PATCH 04/15] Don't abandon creating property tree if there is a
conflict, and hope for the best
Change-Id: I194c815fdd58bfb84aaf7db02b8f0d00b4db21e8

View File

@@ -1,7 +1,7 @@
From 1ccf01e3fcf325727c5b73a9de3eaaf0af5a5ff5 Mon Sep 17 00:00:00 2001
From 2997750083de1ef7ec59738332223115f212d307 Mon Sep 17 00:00:00 2001
From: Isaac Chen <tingyi364@gmail.com>
Date: Wed, 23 Jun 2021 13:07:30 +0800
Subject: [PATCH 05/14] init: Do not start console service when debuggable
Subject: [PATCH 05/15] init: Do not start console service when debuggable
Google added a check for this in R, when it's running it will show a
notification about that performance is impacted.
@@ -13,10 +13,10 @@ Change-Id: I34cfd6b42d3b9aee4b3e63181480cfb8b1255f29
1 file changed, 3 deletions(-)
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 870a97b55..61b6da10c 100644
index c56f86089..a21d433ed 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -1274,9 +1274,6 @@ on property:ro.debuggable=1
@@ -1271,9 +1271,6 @@ on property:ro.debuggable=1
# Give reads to anyone for the accessibility trace folder on debug builds.
chmod 0775 /data/misc/a11ytrace

View File

@@ -1,7 +1,7 @@
From 57a18553e8ac2a9126d2479aadcacdc2d05a386f Mon Sep 17 00:00:00 2001
From 2b6c2f46f312bd7425d6f4a11d72e2a582c33c3e Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 4 Sep 2019 21:11:48 +0200
Subject: [PATCH 06/14] Panic into recovery rather than bootloader
Subject: [PATCH 06/15] Panic into recovery rather than bootloader
Getting last_kmsg/pstore from bootloader isn't possible for other people
than the OEM, but we have TWRP to access last_kmsg/pstore

View File

@@ -1,7 +1,7 @@
From f4eca859b0c8322922483b4efefc959912a37af1 Mon Sep 17 00:00:00 2001
From 1074fa3ad741e17fb72a19db65e178e47a7d7896 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 14 Aug 2018 19:33:03 +0200
Subject: [PATCH 07/14] Detect allowed sdcard options based on vndk
Subject: [PATCH 07/15] Detect allowed sdcard options based on vndk
Some kernel crashes when using too recent sdcardfs options

View File

@@ -1,7 +1,7 @@
From 3ce92a275d7316c85f9f8d6493b7e915f6715dce Mon Sep 17 00:00:00 2001
From 33b57bb6e520aa4d3c35c9db55a5f34441679d10 Mon Sep 17 00:00:00 2001
From: Alberto Ponces <ponces26@gmail.com>
Date: Tue, 1 Feb 2022 13:48:35 +0000
Subject: [PATCH 08/14] Revert "Set /system/xbin permissions to 750."
Subject: [PATCH 08/15] Revert "Set /system/xbin permissions to 750."
This reverts commit 42a1a126e554a8bca31d0afc832848b7b0fa1f4e.

View File

@@ -1,7 +1,7 @@
From 84055bb3c3426fbba051eb4a8226c22577703bc3 Mon Sep 17 00:00:00 2001
From 81cfefebd11b0afcc6fac44d0ae70919649c05b7 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Fri, 1 Nov 2019 18:22:13 +0100
Subject: [PATCH 09/14] Ugly but secure: Set /dev/uinput as 0666 to fix
Subject: [PATCH 09/15] Ugly but secure: Set /dev/uinput as 0666 to fix
fingerprint sensor on some devices
cf https://github.com/phhusson/device_phh_treble/pull/122/commits/e000d69c286b6686777ea6f1867f379e30273e48
@@ -15,10 +15,10 @@ Change-Id: Id374e781957927d5604cb96c7a39b3fb28b3a6c5
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rootdir/ueventd.rc b/rootdir/ueventd.rc
index a140c8c51..2fb164f0a 100644
index 4ec59afe9..c9cd629b3 100644
--- a/rootdir/ueventd.rc
+++ b/rootdir/ueventd.rc
@@ -52,7 +52,7 @@ subsystem dma_heap
@@ -54,7 +54,7 @@ subsystem dma_heap
# these should not be world writable
/dev/uhid 0660 uhid uhid

View File

@@ -1,7 +1,7 @@
From ccf73fa9dbd69d15db886e6901824a291ba7ae30 Mon Sep 17 00:00:00 2001
From 0f141599980f5ef506a33d08a32647c77981b262 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sat, 22 Jan 2022 14:34:45 -0500
Subject: [PATCH 10/14] Add my own OTA mechanism going over /data
Subject: [PATCH 10/15] Add my own OTA mechanism going over /data
Change-Id: I9cacff2d761affa0376b4bb8ca63353a9d95b5de
---

View File

@@ -1,7 +1,7 @@
From 43091033f5904e508aa9b063b2f5599c8759f40e Mon Sep 17 00:00:00 2001
From 2ba8c53774310e3b80fa1f2d3d008c14d8033354 Mon Sep 17 00:00:00 2001
From: Alberto Ponces <ponces26@gmail.com>
Date: Mon, 3 Oct 2022 13:50:36 +0100
Subject: [PATCH 11/14] fs_mgr: Keep allowing encryptable fstab flag
Subject: [PATCH 11/15] fs_mgr: Keep allowing encryptable fstab flag
Some users still use "encryptable" flag while being unencrypted. Let them still boot their devices.

View File

@@ -1,7 +1,7 @@
From e7a4a83c145b47d2ad6b540df1aeae049bdf3c80 Mon Sep 17 00:00:00 2001
From 89fe6573b20df3351b67a653580fac6d55f2d9fd Mon Sep 17 00:00:00 2001
From: ChonDoit <thphantomblog@gmail.com>
Date: Sat, 6 Aug 2022 15:20:41 +0000
Subject: [PATCH 12/14] Add offline Charge Service
Subject: [PATCH 12/15] Add offline Charge Service
Properly Thanks to Victor Bo/Ponces for base patches.
@@ -15,7 +15,7 @@ Additions
1 file changed, 15 insertions(+)
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 61b6da10c..f9ac3a010 100644
index a21d433ed..e188e9b9a 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -11,6 +11,17 @@ import /vendor/etc/init/hw/init.${ro.hardware}.rc
@@ -36,7 +36,7 @@ index 61b6da10c..f9ac3a010 100644
# Cgroups are mounted right before early-init using list from /etc/cgroups.json
on early-init
# Disable sysrq from keyboard
@@ -1184,6 +1195,10 @@ on nonencrypted
@@ -1181,6 +1192,10 @@ on nonencrypted
on property:sys.init_log_level=*
loglevel ${sys.init_log_level}

View File

@@ -1,7 +1,7 @@
From 92a0a7871de03973f9b7211c468546a3a9b90054 Mon Sep 17 00:00:00 2001
From 2ee7afd05b625f687ee81947988bebcbe1844a6c Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 26 Oct 2022 17:59:11 -0400
Subject: [PATCH 13/14] Fix support for devices without cgroupv2 support
Subject: [PATCH 13/15] Fix support for devices without cgroupv2 support
This is technically a revert of 1bd1746447.
The warning inside the commit doesn't really apply to us, because the

View File

@@ -1,7 +1,7 @@
From b2746484b6815423067a617ebaeae21da2081e52 Mon Sep 17 00:00:00 2001
From 833b62c25d6cd3c77f878831c98d11a36bc25c38 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 10 Nov 2022 13:30:50 -0500
Subject: [PATCH 14/14] FDE is dead. Fallback FDE to no encryption, and FDE+FBE
Subject: [PATCH 14/15] FDE is dead. Fallback FDE to no encryption, and FDE+FBE
to FBE
---

View File

@@ -0,0 +1,26 @@
From 1fb477a4e6826352008c046390f05b4c4a94d8dc Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Fri, 9 Dec 2022 13:57:10 -0500
Subject: [PATCH 15/15] Let system override adb/secure props, so we dont get
stuck in ro.adb.secure=1 vendors
---
init/property_service.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/init/property_service.cpp b/init/property_service.cpp
index 02fb8049b..b0027bfc6 100644
--- a/init/property_service.cpp
+++ b/init/property_service.cpp
@@ -727,7 +727,7 @@ static void LoadProperties(char* data, const char* filter, const char* filename,
} else if (it->second != value) {
LOG(WARNING) << "Overriding previous property '" << key << "':'" << it->second
<< "' with new value '" << value << "'";
- if(strcmp("ro.apex.updatable", key) == 0) {
+ if(strcmp("ro.apex.updatable", key) == 0 || strstr(key, "adb") || strstr(key, "secure")) {
LOG(WARNING) << "... Ignored";
} else {
it->second = value;
--
2.25.1

View File

@@ -1,4 +1,4 @@
From 04c871f65cada40eb623f874998b227d3c945259 Mon Sep 17 00:00:00 2001
From 9deee014e68179cc6b8a15e5a197d946bf04dec1 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sat, 17 Feb 2018 19:39:38 +0100
Subject: [PATCH 1/5] Allow deletion of symlink

View File

@@ -1,4 +1,4 @@
From acde5315c66bc8c5eb6e3db4356e0ff66f96bba8 Mon Sep 17 00:00:00 2001
From 11766af32aece696f0390e41a5c574b4ca3de265 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sat, 7 Mar 2020 14:49:09 +0100
Subject: [PATCH 2/5] Failing to create facedata shouldn't be fatal

View File

@@ -1,4 +1,4 @@
From fa66bb6c568e9a6f113d8e34b99091d6f392c96e Mon Sep 17 00:00:00 2001
From 8b2af390ea9bc61b70ce17dbe0ebd637ddc82aca Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Mon, 29 Nov 2021 17:49:13 -0500
Subject: [PATCH 3/5] Don't unmount rw-system.sh binds

View File

@@ -1,36 +1,49 @@
From caaaa7060a9adbfe83dc3e618823f75e38fc3347 Mon Sep 17 00:00:00 2001
From b055f328d1361e2627a67904fbc5c013332f9ebb Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 18 Oct 2022 16:08:09 -0400
Subject: [PATCH 4/5] Exfat can be mounted with "exfat" kernel fs driver, or
"sdfat" or "texfat" (Samsung and Sony variants)
---
fs/Exfat.cpp | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
@AndyCGYan: Adapt to LineageOS vold
diff --git a/fs/Exfat.cpp b/fs/Exfat.cpp
index c8b19e0..9e34347 100644
--- a/fs/Exfat.cpp
+++ b/fs/Exfat.cpp
@@ -35,7 +35,9 @@ static const char* kFsckPath = "/system/bin/fsck.exfat";
Change-Id: I331e66d8cb37664adbd493b9190123e29f01fd9d
---
Utils.cpp | 5 +++++
fs/Exfat.cpp | 11 +++++++++--
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/Utils.cpp b/Utils.cpp
index a7e85f2..fb67067 100644
--- a/Utils.cpp
+++ b/Utils.cpp
@@ -1059,6 +1059,11 @@ bool IsFilesystemSupported(const std::string& fsType) {
/* fuse filesystems */
supported.append("fuse\tntfs\n");
bool IsSupported() {
return access(kMkfsPath, X_OK) == 0 && access(kFsckPath, X_OK) == 0 &&
- IsFilesystemSupported("exfat");
+ (IsFilesystemSupported("exfat") ||
+ IsFilesystemSupported("texfat") ||
+ IsFilesystemSupported("sdfat"));
+ /* treat sdfat/texfat as exfat */
+ if (supported.find("sdfat\n") != std::string::npos || supported.find("texfat\n") != std::string::npos) {
+ supported.append("\texfat\n");
+ }
+
return supported.find(fsType + "\n") != std::string::npos;
}
status_t Check(const std::string& source) {
@@ -61,13 +63,16 @@ status_t Mount(const std::string& source, const std::string& target, int ownerUi
diff --git a/fs/Exfat.cpp b/fs/Exfat.cpp
index c8b19e0..46a0e2d 100644
--- a/fs/Exfat.cpp
+++ b/fs/Exfat.cpp
@@ -61,13 +61,20 @@ status_t Mount(const std::string& source, const std::string& target, int ownerUi
auto mountData = android::base::StringPrintf("uid=%d,gid=%d,fmask=%o,dmask=%o", ownerUid,
ownerGid, permMask, permMask);
- if (mount(source.c_str(), target.c_str(), "exfat", mountFlags, mountData.c_str()) == 0) {
+ const char* fs = "exfat";
+ if (IsFilesystemSupported("sdfat")) fs = "sdfat";
+ if (IsFilesystemSupported("texfat")) fs = "texfat";
+ const char *fs = "exfat";
+ if (IsFilesystemSupported("sdfat")) {
+ fs = "sdfat";
+ } else if (IsFilesystemSupported("texfat")) {
+ fs = "texfat";
+ }
+
+ if (mount(source.c_str(), target.c_str(), fs, mountFlags, mountData.c_str()) == 0) {
return 0;
}

View File

@@ -1,4 +1,4 @@
From bf15352a6e778ecc1e371fe6079b7dedf6cf9568 Mon Sep 17 00:00:00 2001
From 323b9910477923e24b6f28e0340dec15a904840a Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 11 Mar 2020 14:02:35 +0100
Subject: [PATCH 5/5] Every voldmanaged storage is adoptable