Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b823bd45 authored by Narayan Kamath's avatar Narayan Kamath Committed by Gerrit Code Review
Browse files

Merge "Use long to store pointers in ConsumerIrService"

parents f44a3f1e 0d552f7d
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -49,13 +49,13 @@ public class ConsumerIrService extends IConsumerIrService.Stub {

    private static final int MAX_XMIT_TIME = 2000000; /* in microseconds */

    private static native int halOpen();
    private static native int halTransmit(int halObject, int carrierFrequency, int[] pattern);
    private static native int[] halGetCarrierFrequencies(int halObject);
    private static native long halOpen();
    private static native int halTransmit(long halObject, int carrierFrequency, int[] pattern);
    private static native int[] halGetCarrierFrequencies(long halObject);

    private final Context mContext;
    private final PowerManager.WakeLock mWakeLock;
    private final int mHal;
    private final long mNativeHal;
    private final Object mHalLock = new Object();

    ConsumerIrService(Context context) {
@@ -65,23 +65,23 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
        mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
        mWakeLock.setReferenceCounted(true);

        mHal = halOpen();
        mNativeHal = halOpen();
        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!");
            }
        } else if (mHal != 0) {
        } else if (mNativeHal != 0) {
            throw new RuntimeException("IR HAL present, but FEATURE_CONSUMER_IR is not set!");
        }
    }

    @Override
    public boolean hasIrEmitter() {
        return mHal != 0;
        return mNativeHal != 0;
    }

    private void throwIfNoIrEmitter() {
        if (mHal == 0) {
        if (mNativeHal == 0) {
            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
        synchronized (mHalLock) {
            int err = halTransmit(mHal, carrierFrequency, pattern);
            int err = halTransmit(mNativeHal, carrierFrequency, pattern);

            if (err < 0) {
                Slog.e(TAG, "Error transmitting: " + err);
@@ -129,7 +129,7 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
        throwIfNoIrEmitter();

        synchronized(mHalLock) {
            return halGetCarrierFrequencies(mHal);
            return halGetCarrierFrequencies(mNativeHal);
        }
    }
}
+8 −8
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@

namespace android {

static jint halOpen(JNIEnv *env, jobject obj) {
static jlong halOpen(JNIEnv *env, jobject obj) {
    hw_module_t const* module;
    consumerir_device_t *dev;
    int err;
@@ -47,10 +47,10 @@ static jint halOpen(JNIEnv *env, jobject obj) {
        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) {
    int ret;

@@ -67,8 +67,8 @@ static jint halTransmit(JNIEnv *env, jobject obj, jint halObject,
}

static jintArray halGetCarrierFrequencies(JNIEnv *env, jobject obj,
    jint halObject) {
    consumerir_device_t *dev = (consumerir_device_t *) halObject;
    jlong halObject) {
    consumerir_device_t *dev = reinterpret_cast<consumerir_device_t*>(halObject);
    consumerir_freq_range_t *ranges;
    int len;

@@ -101,9 +101,9 @@ static jintArray halGetCarrierFrequencies(JNIEnv *env, jobject obj,
}

static JNINativeMethod method_table[] = {
    { "halOpen", "()I", (void *)halOpen },
    { "halTransmit", "(II[I)I", (void *)halTransmit },
    { "halGetCarrierFrequencies", "(I)[I", (void *)halGetCarrierFrequencies},
    { "halOpen", "()J", (void *)halOpen },
    { "halTransmit", "(JI[I)I", (void *)halTransmit },
    { "halGetCarrierFrequencies", "(J)[I", (void *)halGetCarrierFrequencies},
};

int register_android_server_ConsumerIrService(JNIEnv *env) {