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
194482b1413656b9c0c5937b4d7a73235f872a6678Tomasz Wasilczykimport android.graphics.Bitmap;
208cfb0e81fdd91b7fe1c02287394ac068287281d5Tomasz Wasilczykimport android.hardware.radio.ProgramSelector;
21347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykimport android.hardware.radio.RadioManager;
22347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk
23347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk/** {@hide} */
24347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczykinterface ITuner {
25d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk    void close();
26d7c21d3cbfe8e1016a92234f89d6fe8c110144d1Tomasz Wasilczyk
27468a53b71025a42dde24922e0255ab3251e63fbeTomasz Wasilczyk    boolean isClosed();
28468a53b71025a42dde24922e0255ab3251e63fbeTomasz Wasilczyk
298b6db4f2eb02f231dd8006debbc1e1be1181178aTomasz Wasilczyk    /**
308b6db4f2eb02f231dd8006debbc1e1be1181178aTomasz Wasilczyk     * @throws IllegalArgumentException if config is not valid or null
318b6db4f2eb02f231dd8006debbc1e1be1181178aTomasz Wasilczyk     */
328b6db4f2eb02f231dd8006debbc1e1be1181178aTomasz Wasilczyk    void setConfiguration(in RadioManager.BandConfig config);
338b6db4f2eb02f231dd8006debbc1e1be1181178aTomasz Wasilczyk
348b6db4f2eb02f231dd8006debbc1e1be1181178aTomasz Wasilczyk    RadioManager.BandConfig getConfiguration();
358b6db4f2eb02f231dd8006debbc1e1be1181178aTomasz Wasilczyk
369fa0287c1802df074d4039489dcfad712c19bcbaTomasz Wasilczyk    /**
379fa0287c1802df074d4039489dcfad712c19bcbaTomasz Wasilczyk     * @throws IllegalStateException if tuner was opened without audio
389fa0287c1802df074d4039489dcfad712c19bcbaTomasz Wasilczyk     */
399fa0287c1802df074d4039489dcfad712c19bcbaTomasz Wasilczyk    void setMuted(boolean mute);
409fa0287c1802df074d4039489dcfad712c19bcbaTomasz Wasilczyk
419fa0287c1802df074d4039489dcfad712c19bcbaTomasz Wasilczyk    boolean isMuted();
422383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk
432383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk    /**
442383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk     * @throws IllegalStateException if called out of sequence
452383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk     */
462383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk    void step(boolean directionDown, boolean skipSubChannel);
472383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk
482383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk    /**
492383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk     * @throws IllegalStateException if called out of sequence
502383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk     */
512383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk    void scan(boolean directionDown, boolean skipSubChannel);
522383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk
532383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk    /**
542383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk     * @throws IllegalArgumentException if invalid arguments are passed
552383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk     * @throws IllegalStateException if called out of sequence
562383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk     */
578cfb0e81fdd91b7fe1c02287394ac068287281d5Tomasz Wasilczyk    void tune(in ProgramSelector selector);
582383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk
592383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk    /**
602383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk     * @throws IllegalStateException if called out of sequence
612383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk     */
622383793eaee223546985ee12c2f35a3445e34b1cTomasz Wasilczyk    void cancel();
6337d986d17d0210706be907ce9119b711eeaca235Tomasz Wasilczyk
64c4cd823a2e4ce62d3a1c6ee6c71bb406c564608cTomasz Wasilczyk    void cancelAnnouncement();
65c4cd823a2e4ce62d3a1c6ee6c71bb406c564608cTomasz Wasilczyk
6637d986d17d0210706be907ce9119b711eeaca235Tomasz Wasilczyk    RadioManager.ProgramInfo getProgramInformation();
67d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk
684482b1413656b9c0c5937b4d7a73235f872a6678Tomasz Wasilczyk    Bitmap getImage(int id);
694482b1413656b9c0c5937b4d7a73235f872a6678Tomasz Wasilczyk
70d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk    /**
7167f9d5070a74a0bf34f0335899a96dedcac26c96Jeff Sharkey     * @return {@code true} if the scan was properly scheduled,
72d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     *          {@code false} if the scan feature is unavailable
73d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     */
74d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk    boolean startBackgroundScan();
75d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk
76d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk    /**
770f1776d08b43f5f71a9f89b6a4f1838df4d3d744Tomasz Wasilczyk     * @param vendorFilter Vendor-specific filter, must be Map<String, String>
7867f9d5070a74a0bf34f0335899a96dedcac26c96Jeff Sharkey     * @return the list, or null if scan is in progress
79d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     * @throws IllegalArgumentException if invalid arguments are passed
80d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     * @throws IllegalStateException if the scan has not been started, client may
81d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     *         call startBackgroundScan to fix this.
82d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     */
830f1776d08b43f5f71a9f89b6a4f1838df4d3d744Tomasz Wasilczyk    List<RadioManager.ProgramInfo> getProgramList(in Map vendorFilter);
84d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk
85d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk    /**
86d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     * @throws IllegalStateException if the switch is not supported at current
87d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     *         configuration.
88d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     */
89d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk    boolean isAnalogForced();
90d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk
91d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk    /**
92d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     * @throws IllegalStateException if the switch is not supported at current
93d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     *         configuration.
94d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk     */
95d3d53f669268fe8dd15f16abbd0504f7b9e38405Tomasz Wasilczyk    void setAnalogForced(boolean isForced);
9639ac214838988a33096529bd4e1f003ef7895491Tomasz Wasilczyk
9739ac214838988a33096529bd4e1f003ef7895491Tomasz Wasilczyk    boolean isAntennaConnected();
98347192e0da1f39347e7ab7b58b002f166b4afaa7Tomasz Wasilczyk}
99