summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuK1337 <priv.luk@gmail.com>2020-11-21 14:53:53 +0100
committerSemavi Ulusoy <doc.divxm@gmail.com>2022-02-02 21:38:59 +0300
commit956d419171e9f2105881c1b5b213cdfb558581b7 (patch)
tree99401506ed74b9573acc4f2af90584311479394b
parented1b1d444d732a4b80b1e3a8a5afd8cb575dac83 (diff)
Add local OpFeatures implementation
Change-Id: Ibb1d890a96683e005520da977f2433f8094b0644
-rw-r--r--oneplus-fwk/Android.bp8
-rw-r--r--oneplus-fwk/src/android/util/OpFeatures.java41
2 files changed, 49 insertions, 0 deletions
diff --git a/oneplus-fwk/Android.bp b/oneplus-fwk/Android.bp
new file mode 100644
index 0000000..9750d1b
--- /dev/null
+++ b/oneplus-fwk/Android.bp
@@ -0,0 +1,8 @@
+java_library {
+ name: "oneplus-fwk",
+ installable: true,
+
+ srcs: [
+ "src/**/*.java",
+ ],
+}
diff --git a/oneplus-fwk/src/android/util/OpFeatures.java b/oneplus-fwk/src/android/util/OpFeatures.java
new file mode 100644
index 0000000..fc6bfe0
--- /dev/null
+++ b/oneplus-fwk/src/android/util/OpFeatures.java
@@ -0,0 +1,41 @@
+package android.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.BitSet;
+
+public final class OpFeatures {
+
+ private static String LOG_TAG = OpFeatures.class.getSimpleName();
+
+ private static final BitSet sFeatures = new BitSet();
+
+ static {
+ File file = new File("/odm/etc/odm_feature_list");
+
+ try (BufferedReader br = new BufferedReader(new FileReader(file))) {
+ for (String line = br.readLine(); line != null; line = br.readLine()) {
+ String[] values = line.split(" ");
+ if (values.length == 4 && values[3].equals("true")) {
+ String id = values[0].replaceAll("[^0-9]", "");
+ if (id.length() != 0) {
+ sFeatures.set(Integer.parseInt(id));
+ }
+ }
+ }
+ } catch (IOException e) {
+ Log.e(LOG_TAG, "Failed to read odm feature list file", e);
+ }
+ }
+
+ public static boolean isSupport(int... features) {
+ for (int feature : features) {
+ if (feature < 0 || !sFeatures.get(feature)) {
+ return false;
+ }
+ }
+ return true;
+ }
+}