Merge "Use long to store pointers in ConsumerIrService"
This commit is contained in:
@ -49,13 +49,13 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
|
|||||||
|
|
||||||
private static final int MAX_XMIT_TIME = 2000000; /* in microseconds */
|
private static final int MAX_XMIT_TIME = 2000000; /* in microseconds */
|
||||||
|
|
||||||
private static native int halOpen();
|
private static native long halOpen();
|
||||||
private static native int halTransmit(int halObject, int carrierFrequency, int[] pattern);
|
private static native int halTransmit(long halObject, int carrierFrequency, int[] pattern);
|
||||||
private static native int[] halGetCarrierFrequencies(int halObject);
|
private static native int[] halGetCarrierFrequencies(long halObject);
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final PowerManager.WakeLock mWakeLock;
|
private final PowerManager.WakeLock mWakeLock;
|
||||||
private final int mHal;
|
private final long mNativeHal;
|
||||||
private final Object mHalLock = new Object();
|
private final Object mHalLock = new Object();
|
||||||
|
|
||||||
ConsumerIrService(Context context) {
|
ConsumerIrService(Context context) {
|
||||||
@ -65,23 +65,23 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
|
|||||||
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
|
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
|
||||||
mWakeLock.setReferenceCounted(true);
|
mWakeLock.setReferenceCounted(true);
|
||||||
|
|
||||||
mHal = halOpen();
|
mNativeHal = halOpen();
|
||||||
if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CONSUMER_IR)) {
|
if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CONSUMER_IR)) {
|
||||||
if (mHal == 0) {
|
if (mNativeHal == 0) {
|
||||||
throw new RuntimeException("FEATURE_CONSUMER_IR present, but no IR HAL loaded!");
|
throw new RuntimeException("FEATURE_CONSUMER_IR present, but no IR HAL loaded!");
|
||||||
}
|
}
|
||||||
} else if (mHal != 0) {
|
} else if (mNativeHal != 0) {
|
||||||
throw new RuntimeException("IR HAL present, but FEATURE_CONSUMER_IR is not set!");
|
throw new RuntimeException("IR HAL present, but FEATURE_CONSUMER_IR is not set!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasIrEmitter() {
|
public boolean hasIrEmitter() {
|
||||||
return mHal != 0;
|
return mNativeHal != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void throwIfNoIrEmitter() {
|
private void throwIfNoIrEmitter() {
|
||||||
if (mHal == 0) {
|
if (mNativeHal == 0) {
|
||||||
throw new UnsupportedOperationException("IR emitter not available");
|
throw new UnsupportedOperationException("IR emitter not available");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -111,7 +111,7 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
|
|||||||
|
|
||||||
// Right now there is no mechanism to ensure fair queing of IR requests
|
// Right now there is no mechanism to ensure fair queing of IR requests
|
||||||
synchronized (mHalLock) {
|
synchronized (mHalLock) {
|
||||||
int err = halTransmit(mHal, carrierFrequency, pattern);
|
int err = halTransmit(mNativeHal, carrierFrequency, pattern);
|
||||||
|
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
Slog.e(TAG, "Error transmitting: " + err);
|
Slog.e(TAG, "Error transmitting: " + err);
|
||||||
@ -129,7 +129,7 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
|
|||||||
throwIfNoIrEmitter();
|
throwIfNoIrEmitter();
|
||||||
|
|
||||||
synchronized(mHalLock) {
|
synchronized(mHalLock) {
|
||||||
return halGetCarrierFrequencies(mHal);
|
return halGetCarrierFrequencies(mNativeHal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
static jint halOpen(JNIEnv *env, jobject obj) {
|
static jlong halOpen(JNIEnv *env, jobject obj) {
|
||||||
hw_module_t const* module;
|
hw_module_t const* module;
|
||||||
consumerir_device_t *dev;
|
consumerir_device_t *dev;
|
||||||
int err;
|
int err;
|
||||||
@ -47,10 +47,10 @@ static jint halOpen(JNIEnv *env, jobject obj) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<jint>(dev);
|
return reinterpret_cast<jlong>(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static jint halTransmit(JNIEnv *env, jobject obj, jint halObject,
|
static jint halTransmit(JNIEnv *env, jobject obj, jlong halObject,
|
||||||
jint carrierFrequency, jintArray pattern) {
|
jint carrierFrequency, jintArray pattern) {
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -67,8 +67,8 @@ static jint halTransmit(JNIEnv *env, jobject obj, jint halObject,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static jintArray halGetCarrierFrequencies(JNIEnv *env, jobject obj,
|
static jintArray halGetCarrierFrequencies(JNIEnv *env, jobject obj,
|
||||||
jint halObject) {
|
jlong halObject) {
|
||||||
consumerir_device_t *dev = (consumerir_device_t *) halObject;
|
consumerir_device_t *dev = reinterpret_cast<consumerir_device_t*>(halObject);
|
||||||
consumerir_freq_range_t *ranges;
|
consumerir_freq_range_t *ranges;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
@ -101,9 +101,9 @@ static jintArray halGetCarrierFrequencies(JNIEnv *env, jobject obj,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static JNINativeMethod method_table[] = {
|
static JNINativeMethod method_table[] = {
|
||||||
{ "halOpen", "()I", (void *)halOpen },
|
{ "halOpen", "()J", (void *)halOpen },
|
||||||
{ "halTransmit", "(II[I)I", (void *)halTransmit },
|
{ "halTransmit", "(JI[I)I", (void *)halTransmit },
|
||||||
{ "halGetCarrierFrequencies", "(I)[I", (void *)halGetCarrierFrequencies},
|
{ "halGetCarrierFrequencies", "(J)[I", (void *)halGetCarrierFrequencies},
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_android_server_ConsumerIrService(JNIEnv *env) {
|
int register_android_server_ConsumerIrService(JNIEnv *env) {
|
||||||
|
Reference in New Issue
Block a user