aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdnan Begovic <adnan@cyngn.com>2016-03-14 08:13:57 -0700
committerAdnan Begovic <adnan@cyngn.com>2016-03-15 14:09:04 -0700
commita335ba39c2304fc2ac971322cf8118a235769b85 (patch)
tree85db8196a1dfb645591f32a0b3f2b22fd97a9b1d /src
parent19b267dfff29400de5909fad62c0e962b821b804 (diff)
downloadvendor_cmsdk-a335ba39c2304fc2ac971322cf8118a235769b85.zip
vendor_cmsdk-a335ba39c2304fc2ac971322cf8118a235769b85.tar.gz
vendor_cmsdk-a335ba39c2304fc2ac971322cf8118a235769b85.tar.bz2
cmsdk: Mandate cmhw feature xml's for service implementation.
The features xml plays two roles: 1) To allow sdk interface (constructor) to throw when system service is unavailable. This allows for clearer platform development debugging. 2) To allow for simpler disambiguation of what services to instrument in a modular environment. Change-Id: I41f4ac60af076743909c6090fd50c3ad045bc9e1
Diffstat (limited to 'src')
-rw-r--r--src/java/cyanogenmod/app/CMContextConstants.java15
-rw-r--r--src/java/cyanogenmod/hardware/CMHardwareManager.java21
2 files changed, 29 insertions, 7 deletions
diff --git a/src/java/cyanogenmod/app/CMContextConstants.java b/src/java/cyanogenmod/app/CMContextConstants.java
index a1da29c..957f33c 100644
--- a/src/java/cyanogenmod/app/CMContextConstants.java
+++ b/src/java/cyanogenmod/app/CMContextConstants.java
@@ -16,6 +16,8 @@
package cyanogenmod.app;
+import android.annotation.SdkConstant;
+
/**
* @hide
* TODO: We need to somehow make these managers accessible via getSystemService
@@ -111,4 +113,17 @@ public final class CMContextConstants {
* @hide
*/
public static final String CM_ICON_CACHE_SERVICE = "cmiconcache";
+
+ /**
+ * Features supported by the CMSDK.
+ */
+ public static class Features {
+ /**
+ * Feature for {@link PackageManager#getSystemAvailableFeatures} and
+ * {@link PackageManager#hasSystemFeature}: The device includes the hardware abstraction
+ * framework service utilized by the cmsdk.
+ */
+ @SdkConstant(SdkConstant.SdkConstantType.FEATURE)
+ public static final String HARDWARE_ABSTRACTION = "org.cyanogenmod.hardware";
+ }
}
diff --git a/src/java/cyanogenmod/hardware/CMHardwareManager.java b/src/java/cyanogenmod/hardware/CMHardwareManager.java
index 7d97df6..5bfb858 100644
--- a/src/java/cyanogenmod/hardware/CMHardwareManager.java
+++ b/src/java/cyanogenmod/hardware/CMHardwareManager.java
@@ -154,6 +154,13 @@ public final class CMHardwareManager {
mContext = context;
}
sService = getService();
+
+ if (context.getPackageManager().hasSystemFeature(
+ CMContextConstants.Features.HARDWARE_ABSTRACTION) && !checkService()) {
+ throw new RuntimeException("Unable to get CMHardwareService. The service either" +
+ " crashed, was not started, or the interface has been called to early in" +
+ " SystemServer init");
+ }
}
/**
@@ -440,7 +447,7 @@ public final class CMHardwareManager {
public boolean writePersistentString(String key, String value) {
try {
if (checkService()) {
- return getService().writePersistentBytes(key,
+ return sService.writePersistentBytes(key,
value == null ? null : value.getBytes("UTF-8"));
}
} catch (RemoteException e) {
@@ -460,7 +467,7 @@ public final class CMHardwareManager {
public boolean writePersistentInt(String key, int value) {
try {
if (checkService()) {
- return getService().writePersistentBytes(key,
+ return sService.writePersistentBytes(key,
ByteBuffer.allocate(4).putInt(value).array());
}
} catch (RemoteException e) {
@@ -478,7 +485,7 @@ public final class CMHardwareManager {
public boolean writePersistentBytes(String key, byte[] value) {
try {
if (checkService()) {
- return getService().writePersistentBytes(key, value);
+ return sService.writePersistentBytes(key, value);
}
} catch (RemoteException e) {
}
@@ -494,7 +501,7 @@ public final class CMHardwareManager {
public String readPersistentString(String key) {
try {
if (checkService()) {
- byte[] bytes = getService().readPersistentBytes(key);
+ byte[] bytes = sService.readPersistentBytes(key);
if (bytes != null) {
return new String(bytes, "UTF-8");
}
@@ -515,7 +522,7 @@ public final class CMHardwareManager {
public int readPersistentInt(String key) {
try {
if (checkService()) {
- byte[] bytes = getService().readPersistentBytes(key);
+ byte[] bytes = sService.readPersistentBytes(key);
if (bytes != null) {
return ByteBuffer.wrap(bytes).getInt();
}
@@ -534,7 +541,7 @@ public final class CMHardwareManager {
public byte[] readPersistentBytes(String key) {
try {
if (checkService()) {
- return getService().readPersistentBytes(key);
+ return sService.readPersistentBytes(key);
}
} catch (RemoteException e) {
}
@@ -549,7 +556,7 @@ public final class CMHardwareManager {
public boolean deletePersistentObject(String key) {
try {
if (checkService()) {
- return getService().writePersistentBytes(key, null);
+ return sService.writePersistentBytes(key, null);
}
} catch (RemoteException e) {
}