aboutsummaryrefslogtreecommitdiffstats
path: root/cm
diff options
context:
space:
mode:
authorMatt Wagantall <mwagantall@cyngn.com>2016-02-02 11:32:18 -0800
committerGerrit Code Review <gerrit@cyanogenmod.org>2016-02-02 16:37:59 -0800
commiteb82dbf050b17bbac2fd54cdeed3029b78778abb (patch)
tree99620920a0581fb70a7cacb4ed965fc59490573a /cm
parentee703e74fa0d674b485688d25040a31474913b15 (diff)
downloadvendor_cmsdk-eb82dbf050b17bbac2fd54cdeed3029b78778abb.zip
vendor_cmsdk-eb82dbf050b17bbac2fd54cdeed3029b78778abb.tar.gz
vendor_cmsdk-eb82dbf050b17bbac2fd54cdeed3029b78778abb.tar.bz2
cmsdk: cmhw: Add UniqueDeviceId support
It's sometimes useful to know what physical device you're using. CMHW SerialNumber and an "ro.serialno" property already exists, but are not guaranteed to be unique. Different OEM may use overlapping numbering schemes, and sometimes placeholder like "012345ABCDE" are used. Attempt to work around these shortcomings by defining a new UniqueDeviceId class that provides a globally unique device ID that is both deterministic for a given device and designed not to overlap with IDs of any other devices. Change-Id: I3f426972558394ba8e78261273ac8521aa603327
Diffstat (limited to 'cm')
-rw-r--r--cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java21
1 files changed, 20 insertions, 1 deletions
diff --git a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java
index 05ee6c7..7031bd7 100644
--- a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java
+++ b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMHardwareService.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2015 The CyanogenMod Project
+ * Copyright (C) 2015-2016 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -50,6 +50,7 @@ import org.cyanogenmod.hardware.TapToWake;
import org.cyanogenmod.hardware.ThermalMonitor;
import org.cyanogenmod.hardware.ThermalUpdateCallback;
import org.cyanogenmod.hardware.TouchscreenHovering;
+import org.cyanogenmod.hardware.UniqueDeviceId;
import org.cyanogenmod.hardware.VibratorHW;
/** @hide */
@@ -83,6 +84,7 @@ public class CMHardwareService extends SystemService implements ThermalUpdateCal
public long getLtoDownloadInterval();
public String getSerialNumber();
+ public String getUniqueDeviceId();
public boolean requireAdaptiveBacklightForSunlightEnhancement();
public boolean isSunlightEnhancementSelfManaged();
@@ -133,6 +135,8 @@ public class CMHardwareService extends SystemService implements ThermalUpdateCal
mSupportedFeatures |= CMHardwareManager.FEATURE_PERSISTENT_STORAGE;
if (ThermalMonitor.isSupported())
mSupportedFeatures |= CMHardwareManager.FEATURE_THERMAL_MONITOR;
+ if (UniqueDeviceId.isSupported())
+ mSupportedFeatures |= CMHardwareManager.FEATURE_UNIQUE_DEVICE_ID;
}
public int getSupportedFeatures() {
@@ -295,6 +299,10 @@ public class CMHardwareService extends SystemService implements ThermalUpdateCal
return SerialNumber.getSerialNumber();
}
+ public String getUniqueDeviceId() {
+ return UniqueDeviceId.getUniqueDeviceId();
+ }
+
public boolean requireAdaptiveBacklightForSunlightEnhancement() {
return SunlightEnhancement.isAdaptiveBacklightRequired();
}
@@ -524,6 +532,17 @@ public class CMHardwareService extends SystemService implements ThermalUpdateCal
}
@Override
+ public String getUniqueDeviceId() {
+ mContext.enforceCallingOrSelfPermission(
+ cyanogenmod.platform.Manifest.permission.HARDWARE_ABSTRACTION_ACCESS, null);
+ if (!isSupported(CMHardwareManager.FEATURE_UNIQUE_DEVICE_ID)) {
+ Log.e(TAG, "Unique device ID is not supported");
+ return null;
+ }
+ return mCmHwImpl.getUniqueDeviceId();
+ }
+
+ @Override
public boolean requireAdaptiveBacklightForSunlightEnhancement() {
mContext.enforceCallingOrSelfPermission(
cyanogenmod.platform.Manifest.permission.HARDWARE_ABSTRACTION_ACCESS, null);