From 39ac214838988a33096529bd4e1f003ef7895491 Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Wed, 17 May 2017 14:55:17 -0700 Subject: [PATCH] Implement isAntennaConnected interface of ITuner. Test: instrumentation Bug: b/36863239 Change-Id: I325cc29a696a6163fd3db1f2a75e64a2b1ddf514 --- core/java/android/hardware/radio/ITuner.aidl | 2 ++ .../android/hardware/radio/TunerAdapter.java | 7 +++++-- .../java/com/android/server/radio/Tuner.java | 14 ++++++++++++++ .../core/jni/com_android_server_radio_Tuner.cpp | 16 ++++++++++++++++ .../android/hardware/radio/tests/RadioTest.java | 5 ++--- 5 files changed, 39 insertions(+), 5 deletions(-) diff --git a/core/java/android/hardware/radio/ITuner.aidl b/core/java/android/hardware/radio/ITuner.aidl index 5374b4b991816..1fc71e07cdb73 100644 --- a/core/java/android/hardware/radio/ITuner.aidl +++ b/core/java/android/hardware/radio/ITuner.aidl @@ -84,4 +84,6 @@ interface ITuner { * configuration. */ void setAnalogForced(boolean isForced); + + boolean isAntennaConnected(); } diff --git a/core/java/android/hardware/radio/TunerAdapter.java b/core/java/android/hardware/radio/TunerAdapter.java index db8c3918a1b15..a457494012849 100644 --- a/core/java/android/hardware/radio/TunerAdapter.java +++ b/core/java/android/hardware/radio/TunerAdapter.java @@ -218,8 +218,11 @@ class TunerAdapter extends RadioTuner { @Override public boolean isAntennaConnected() { - // TODO(b/36863239): forward to mTuner - throw new RuntimeException("Not implemented"); + try { + return mTuner.isAntennaConnected(); + } catch (RemoteException e) { + throw new RuntimeException("service died", e); + } } @Override diff --git a/services/core/java/com/android/server/radio/Tuner.java b/services/core/java/com/android/server/radio/Tuner.java index 0dff8ca260dbb..9915c34fb5823 100644 --- a/services/core/java/com/android/server/radio/Tuner.java +++ b/services/core/java/com/android/server/radio/Tuner.java @@ -74,6 +74,8 @@ class Tuner extends ITuner.Stub { private native boolean nativeIsAnalogForced(long nativeContext); private native void nativeSetAnalogForced(long nativeContext, boolean isForced); + private native boolean nativeIsAntennaConnected(long nativeContext); + @Override public void close() { synchronized (mLock) { @@ -177,6 +179,7 @@ class Tuner extends ITuner.Stub { } } + @Override public boolean startBackgroundScan() { synchronized (mLock) { checkNotClosedLocked(); @@ -184,6 +187,7 @@ class Tuner extends ITuner.Stub { } } + @Override public List getProgramList(String filter) { synchronized (mLock) { checkNotClosedLocked(); @@ -195,6 +199,7 @@ class Tuner extends ITuner.Stub { } } + @Override public boolean isAnalogForced() { synchronized (mLock) { checkNotClosedLocked(); @@ -202,10 +207,19 @@ class Tuner extends ITuner.Stub { } } + @Override public void setAnalogForced(boolean isForced) { synchronized (mLock) { checkNotClosedLocked(); nativeSetAnalogForced(mNativeContext, isForced); } } + + @Override + public boolean isAntennaConnected() { + synchronized (mLock) { + checkNotClosedLocked(); + return nativeIsAntennaConnected(mNativeContext); + } + } } diff --git a/services/core/jni/com_android_server_radio_Tuner.cpp b/services/core/jni/com_android_server_radio_Tuner.cpp index 291964730f1c3..b92136aedd03f 100644 --- a/services/core/jni/com_android_server_radio_Tuner.cpp +++ b/services/core/jni/com_android_server_radio_Tuner.cpp @@ -319,6 +319,21 @@ static void nativeSetAnalogForced(JNIEnv *env, jobject obj, jlong nativeContext, convert::ThrowIfFailed(env, halResult); } +static bool nativeIsAntennaConnected(JNIEnv *env, jobject obj, jlong nativeContext) { + ALOGV("nativeIsAntennaConnected()"); + auto halTuner = getHalTuner(nativeContext); + if (halTuner == nullptr) return false; + + bool isConnected = false; + Result halResult; + auto hidlResult = halTuner->getConfiguration([&](Result result, const BandConfig& config) { + halResult = result; + isConnected = config.antennaConnected; + }); + convert::ThrowIfFailed(env, hidlResult, halResult); + return isConnected; +} + static const JNINativeMethod gTunerMethods[] = { { "nativeInit", "(I)J", (void*)nativeInit }, { "nativeFinalize", "(J)V", (void*)nativeFinalize }, @@ -338,6 +353,7 @@ static const JNINativeMethod gTunerMethods[] = { (void*)nativeGetProgramList }, { "nativeIsAnalogForced", "(J)Z", (void*)nativeIsAnalogForced }, { "nativeSetAnalogForced", "(JZ)V", (void*)nativeSetAnalogForced }, + { "nativeIsAntennaConnected", "(J)Z", (void*)nativeIsAntennaConnected }, }; } // namespace Tuner diff --git a/tests/radio/src/android/hardware/radio/tests/RadioTest.java b/tests/radio/src/android/hardware/radio/tests/RadioTest.java index 407f24cdf6a9d..47e104ce03e3a 100644 --- a/tests/radio/src/android/hardware/radio/tests/RadioTest.java +++ b/tests/radio/src/android/hardware/radio/tests/RadioTest.java @@ -137,9 +137,8 @@ public class RadioTest { } private void checkAntenna() { - // TODO(b/36863239): enable check when isAntennaConnected is implemented - //boolean isConnected = mRadioTuner.isAntennaConnected(); - //assertTrue(isConnected); + boolean isConnected = mRadioTuner.isAntennaConnected(); + assertTrue(isConnected); } @Test