TunerAdapter.java revision d7c21d3cbfe8e1016a92234f89d6fe8c110144d1
1347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk/** 2347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * Copyright (C) 2017 The Android Open Source Project 3347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * 4347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * Licensed under the Apache License, Version 2.0 (the "License"); 5347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * you may not use this file except in compliance with the License. 6347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * You may obtain a copy of the License at 7347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * 8347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * http://www.apache.org/licenses/LICENSE-2.0 9347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * 10347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * Unless required by applicable law or agreed to in writing, software 11347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * distributed under the License is distributed on an "AS IS" BASIS, 12347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * See the License for the specific language governing permissions and 14347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * limitations under the License. 15347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk */ 16347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 17347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykpackage android.hardware.radio; 18347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 19347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykimport android.annotation.NonNull; 20347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykimport android.annotation.Nullable; 21347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykimport android.os.RemoteException; 22347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykimport android.util.Log; 23347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 24347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykimport java.util.ArrayList; 25347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykimport java.util.List; 26347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 27347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk/** 28347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk * Implements the RadioTuner interface by forwarding calls to radio service. 29347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk */ 30347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykclass TunerAdapter extends RadioTuner { 31347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk private static final String TAG = "radio.TunerAdapter"; 32347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 33347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @NonNull private final ITuner mTuner; 34d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk private boolean mIsClosed = false; 35347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 36347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk TunerAdapter(ITuner tuner) { 37347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk if (tuner == null) { 38347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new NullPointerException(); 39347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 40347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk mTuner = tuner; 41347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 42347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 43347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 44347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public void close() { 45d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk synchronized (mTuner) { 46d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk if (mIsClosed) { 47d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk Log.d(TAG, "Tuner is already closed"); 48d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk return; 49d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk } 50d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk mIsClosed = true; 51d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk } 52d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk try { 53d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk mTuner.close(); 54d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk } catch (RemoteException e) { 55d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk Log.e(TAG, "Exception trying to close tuner", e); 56d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk } 57347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 58347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 59347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 60347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public int setConfiguration(RadioManager.BandConfig config) { 61347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 62347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 63347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 64347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 65347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 66347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public int getConfiguration(RadioManager.BandConfig[] config) { 67347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 68347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 69347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 70347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 71347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 72347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public int setMute(boolean mute) { 73347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 74347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 75347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 76347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 77347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 78347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public boolean getMute() { 79347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 80347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 81347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 82347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 83347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 84347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public int step(int direction, boolean skipSubChannel) { 85347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 86347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 87347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 88347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 89347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 90347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public int scan(int direction, boolean skipSubChannel) { 91347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 92347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 93347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 94347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 95347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 96347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public int tune(int channel, int subChannel) { 97347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 98347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 99347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 100347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 101347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 102347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public int cancel() { 103347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 104347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 105347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 106347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 107347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 108347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public int getProgramInformation(RadioManager.ProgramInfo[] info) { 109347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk if (info == null || info.length != 1) { 110347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new IllegalArgumentException("The argument must be an array of length 1"); 111347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 112347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk try { 113347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk return mTuner.getProgramInformation(info); 114347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } catch (RemoteException e) { 115347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw e.rethrowFromSystemServer(); 116347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 117347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 118347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 119347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 120347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public boolean startBackgroundScan() { 121347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 122347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 123347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 124347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 125347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 126347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public @NonNull List<RadioManager.ProgramInfo> getProgramList(@Nullable String filter) { 127347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 128347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 129347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 130347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 131347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 132347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public boolean isAnalogForced() { 133347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 134347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 135347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 136347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 137347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 138347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public void setAnalogForced(boolean isForced) { 139347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 140347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 141347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 142347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 143347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 144347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public boolean isAntennaConnected() { 145347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 146347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 147347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 148347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk 149347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk @Override 150347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk public boolean hasControl() { 151347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk // TODO(b/36863239): forward to mTuner 152347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk throw new RuntimeException("Not implemented"); 153347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk } 154347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk} 155