Implement step and scan calls of ITuner.
Test: instrumentation
Bug: b/36863239
Change-Id: I8c089321a3e45f8ede8d8231ffd0dc5734db0bb5
diff --git a/services/core/jni/com_android_server_radio_RadioService.cpp b/services/core/jni/com_android_server_radio_RadioService.cpp
index 8b53b1b..c424d30 100644
--- a/services/core/jni/com_android_server_radio_RadioService.cpp
+++ b/services/core/jni/com_android_server_radio_RadioService.cpp
@@ -22,6 +22,7 @@
#include "com_android_server_radio_Tuner.h"
#include "com_android_server_radio_convert.h"
+#include <android/hardware/broadcastradio/1.1/IBroadcastRadio.h>
#include <android/hardware/broadcastradio/1.1/IBroadcastRadioFactory.h>
#include <core_jni_helpers.h>
#include <utils/Log.h>
@@ -39,7 +40,6 @@
namespace V1_1 = hardware::broadcastradio::V1_1;
using V1_0::Class;
-using V1_0::IBroadcastRadio;
using V1_0::Result;
using V1_0::BandConfig;
@@ -57,7 +57,7 @@
struct ServiceContext {
ServiceContext() {}
- sp<IBroadcastRadio> mModule;
+ sp<V1_0::IBroadcastRadio> mModule;
private:
DISALLOW_COPY_AND_ASSIGN(ServiceContext);
@@ -90,7 +90,7 @@
delete ctx;
}
-static sp<IBroadcastRadio> getModule(jlong nativeContext) {
+static sp<V1_0::IBroadcastRadio> getModule(jlong nativeContext) {
ALOGV("getModule()");
AutoMutex _l(gContextMutex);
auto& ctx = getNativeContext(nativeContext);
@@ -106,9 +106,10 @@
return nullptr;
}
- sp<IBroadcastRadio> module = nullptr;
+ sp<V1_0::IBroadcastRadio> module = nullptr;
// TODO(b/36863239): not only AM/FM
- factory->connectModule(Class::AM_FM, [&](Result retval, const sp<IBroadcastRadio>& result) {
+ factory->connectModule(Class::AM_FM, [&](Result retval,
+ const sp<V1_0::IBroadcastRadio>& result) {
if (retval == Result::OK) {
module = result;
}
@@ -133,10 +134,19 @@
return nullptr;
}
+ HalRevision halRev;
+ if (V1_1::IBroadcastRadio::castFrom(module).withDefault(nullptr) != nullptr) {
+ ALOGI("Opening tuner with broadcast radio HAL 1.1");
+ halRev = HalRevision::V1_1;
+ } else {
+ ALOGI("Opening tuner with broadcast radio HAL 1.0");
+ halRev = HalRevision::V1_0;
+ }
+
Region region;
BandConfig bandConfigHal = convert::BandConfigToHal(env, bandConfig, region);
- jobject tuner = env->NewObject(gTunerClass, gTunerCstor, callback, region, withAudio);
+ jobject tuner = env->NewObject(gTunerClass, gTunerCstor, callback, halRev, region, withAudio);
if (tuner == nullptr) {
ALOGE("Unable to create new tuner object.");
return nullptr;
@@ -184,7 +194,7 @@
auto tunerClass = FindClassOrDie(env, "com/android/server/radio/Tuner");
gTunerClass = MakeGlobalRefOrDie(env, tunerClass);
gTunerCstor = GetMethodIDOrDie(env, tunerClass, "<init>",
- "(Landroid/hardware/radio/ITunerCallback;IZ)V");
+ "(Landroid/hardware/radio/ITunerCallback;IIZ)V");
auto serviceClass = FindClassOrDie(env, "com/android/server/radio/RadioService");
gServiceClass = MakeGlobalRefOrDie(env, serviceClass);