Loading core/java/android/hardware/radio/RadioManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -1654,8 +1654,8 @@ public class RadioManager { TunerCallbackAdapter halCallback = new TunerCallbackAdapter(callback, handler); try { tuner = mService.openTuner(moduleId, config, withAudio, halCallback); } catch (RemoteException e) { Log.e(TAG, "Failed to open tuner", e); } catch (RemoteException | IllegalArgumentException ex) { Log.e(TAG, "Failed to open tuner", ex); return null; } if (tuner == null) { Loading core/java/android/hardware/radio/TunerAdapter.java +1 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ class TunerAdapter extends RadioTuner { @Override public int setConfiguration(RadioManager.BandConfig config) { if (config == null) return RadioManager.STATUS_BAD_VALUE; try { mTuner.setConfiguration(config); mBand = config.getType(); Loading core/tests/BroadcastRadioTests/src/android/hardware/radio/tests/functional/RadioTunerTest.java +5 −13 Original line number Diff line number Diff line Loading @@ -149,6 +149,10 @@ public class RadioTunerTest { mRadioTuner = mRadioManager.openTuner(mModule.getId(), mFmBandConfig, withAudio, mCallback, null); if (!withAudio) { // non-audio sessions might not be supported - if so, then skip the test assumeNotNull(mRadioTuner); } assertNotNull(mRadioTuner); verify(mCallback, timeout(kConfigCallbackTimeoutMs)).onConfigurationChanged(any()); resetCallback(); Loading Loading @@ -207,20 +211,8 @@ public class RadioTunerTest { public void testSetBadConfiguration() throws Throwable { openTuner(); // set bad config Constructor<RadioManager.AmBandConfig> configConstr = RadioManager.AmBandConfig.class.getDeclaredConstructor( int.class, int.class, int.class, int.class, int.class, boolean.class); configConstr.setAccessible(true); RadioManager.AmBandConfig badConfig = configConstr.newInstance( 0 /*region*/, RadioManager.BAND_AM /*type*/, 10000 /*lowerLimit*/, 1 /*upperLimit*/, 100 /*spacing*/, false /*stereo*/); int ret = mRadioTuner.setConfiguration(badConfig); assertEquals(RadioManager.STATUS_BAD_VALUE, ret); verify(mCallback, never()).onConfigurationChanged(any()); // set null config ret = mRadioTuner.setConfiguration(null); int ret = mRadioTuner.setConfiguration(null); assertEquals(RadioManager.STATUS_BAD_VALUE, ret); verify(mCallback, never()).onConfigurationChanged(any()); Loading services/core/java/com/android/server/broadcastradio/BroadcastRadioService.java +1 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ public class BroadcastRadioService extends SystemService { } synchronized (mLock) { if (mHal2.hasModule(moduleId)) { return mHal2.openSession(moduleId, callback); return mHal2.openSession(moduleId, bandConfig, withAudio, callback); } else { return mHal1.openTuner(moduleId, bandConfig, withAudio, callback); } Loading services/core/java/com/android/server/broadcastradio/hal2/BroadcastRadioService.java +10 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.broadcastradio.hal2; import android.annotation.NonNull; import android.annotation.Nullable; import android.hardware.radio.ITuner; import android.hardware.radio.ITunerCallback; import android.hardware.radio.RadioManager; Loading Loading @@ -80,14 +81,21 @@ public class BroadcastRadioService { return mModules.containsKey(id); } public ITuner openSession(int moduleId, @NonNull ITunerCallback callback) { public ITuner openSession(int moduleId, @Nullable RadioManager.BandConfig legacyConfig, boolean withAudio, @NonNull ITunerCallback callback) { Objects.requireNonNull(callback); if (!withAudio) { throw new IllegalArgumentException("Non-audio sessions not supported with HAL 2.x"); } RadioModule module = mModules.get(moduleId); if (module == null) { throw new IllegalArgumentException("Invalid module ID"); } return module.openSession(callback); TunerSession session = module.openSession(callback); session.setConfiguration(legacyConfig); return session; } } Loading
core/java/android/hardware/radio/RadioManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -1654,8 +1654,8 @@ public class RadioManager { TunerCallbackAdapter halCallback = new TunerCallbackAdapter(callback, handler); try { tuner = mService.openTuner(moduleId, config, withAudio, halCallback); } catch (RemoteException e) { Log.e(TAG, "Failed to open tuner", e); } catch (RemoteException | IllegalArgumentException ex) { Log.e(TAG, "Failed to open tuner", ex); return null; } if (tuner == null) { Loading
core/java/android/hardware/radio/TunerAdapter.java +1 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ class TunerAdapter extends RadioTuner { @Override public int setConfiguration(RadioManager.BandConfig config) { if (config == null) return RadioManager.STATUS_BAD_VALUE; try { mTuner.setConfiguration(config); mBand = config.getType(); Loading
core/tests/BroadcastRadioTests/src/android/hardware/radio/tests/functional/RadioTunerTest.java +5 −13 Original line number Diff line number Diff line Loading @@ -149,6 +149,10 @@ public class RadioTunerTest { mRadioTuner = mRadioManager.openTuner(mModule.getId(), mFmBandConfig, withAudio, mCallback, null); if (!withAudio) { // non-audio sessions might not be supported - if so, then skip the test assumeNotNull(mRadioTuner); } assertNotNull(mRadioTuner); verify(mCallback, timeout(kConfigCallbackTimeoutMs)).onConfigurationChanged(any()); resetCallback(); Loading Loading @@ -207,20 +211,8 @@ public class RadioTunerTest { public void testSetBadConfiguration() throws Throwable { openTuner(); // set bad config Constructor<RadioManager.AmBandConfig> configConstr = RadioManager.AmBandConfig.class.getDeclaredConstructor( int.class, int.class, int.class, int.class, int.class, boolean.class); configConstr.setAccessible(true); RadioManager.AmBandConfig badConfig = configConstr.newInstance( 0 /*region*/, RadioManager.BAND_AM /*type*/, 10000 /*lowerLimit*/, 1 /*upperLimit*/, 100 /*spacing*/, false /*stereo*/); int ret = mRadioTuner.setConfiguration(badConfig); assertEquals(RadioManager.STATUS_BAD_VALUE, ret); verify(mCallback, never()).onConfigurationChanged(any()); // set null config ret = mRadioTuner.setConfiguration(null); int ret = mRadioTuner.setConfiguration(null); assertEquals(RadioManager.STATUS_BAD_VALUE, ret); verify(mCallback, never()).onConfigurationChanged(any()); Loading
services/core/java/com/android/server/broadcastradio/BroadcastRadioService.java +1 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ public class BroadcastRadioService extends SystemService { } synchronized (mLock) { if (mHal2.hasModule(moduleId)) { return mHal2.openSession(moduleId, callback); return mHal2.openSession(moduleId, bandConfig, withAudio, callback); } else { return mHal1.openTuner(moduleId, bandConfig, withAudio, callback); } Loading
services/core/java/com/android/server/broadcastradio/hal2/BroadcastRadioService.java +10 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.broadcastradio.hal2; import android.annotation.NonNull; import android.annotation.Nullable; import android.hardware.radio.ITuner; import android.hardware.radio.ITunerCallback; import android.hardware.radio.RadioManager; Loading Loading @@ -80,14 +81,21 @@ public class BroadcastRadioService { return mModules.containsKey(id); } public ITuner openSession(int moduleId, @NonNull ITunerCallback callback) { public ITuner openSession(int moduleId, @Nullable RadioManager.BandConfig legacyConfig, boolean withAudio, @NonNull ITunerCallback callback) { Objects.requireNonNull(callback); if (!withAudio) { throw new IllegalArgumentException("Non-audio sessions not supported with HAL 2.x"); } RadioModule module = mModules.get(moduleId); if (module == null) { throw new IllegalArgumentException("Invalid module ID"); } return module.openSession(callback); TunerSession session = module.openSession(callback); session.setConfiguration(legacyConfig); return session; } }