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

Commit d41f2d51 authored by Artem Borisov's avatar Artem Borisov Committed by Ethan Chen
Browse files

ConsumerIR: Support Huawei's DSP chip implementation

Change-Id: Ie48e098b2e463183374dd6c8eba074031e31be2b
parent 276b3436
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.IConsumerIrService;
import android.media.AudioSystem;
import android.os.PowerManager;
import android.util.Slog;

@@ -36,6 +37,7 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
    private final Context mContext;
    private final PowerManager.WakeLock mWakeLock;
    private final boolean mHasNativeHal;
    private final String mParameter;
    private final Object mHalLock = new Object();

    ConsumerIrService(Context context) {
@@ -53,6 +55,7 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
        } else if (mHasNativeHal) {
            throw new RuntimeException("IR HAL present, but FEATURE_CONSUMER_IR is not set!");
        }
        mParameter = AudioSystem.getParameters("audio_capability#irda_support");
    }

    @Override
@@ -91,11 +94,13 @@ public class ConsumerIrService extends IConsumerIrService.Stub {

        // Right now there is no mechanism to ensure fair queing of IR requests
        synchronized (mHalLock) {
            setStartTransmitParameter();
            int err = halTransmit(carrierFrequency, pattern);

            if (err < 0) {
                Slog.e(TAG, "Error transmitting: " + err);
            }
            setEndTransmitParameter();
        }
    }

@@ -112,4 +117,16 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
            return halGetCarrierFrequencies();
        }
    }

    private void setStartTransmitParameter() {
        if (mParameter != null && mParameter.contains("true")) {
            AudioSystem.setParameters("ir_trans=on");
        }
    }

    private void setEndTransmitParameter() {
        if (mParameter != null && mParameter.contains("true")) {
            AudioSystem.setParameters("ir_trans=off");
        }
    }
}