1402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent/* 2402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Copyright (C) 2015 The Android Open Source Project 3402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * 4402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Licensed under the Apache License, Version 2.0 (the "License"); 5402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * you may not use this file except in compliance with the License. 6402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * You may obtain a copy of the License at 7402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * 8402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * http://www.apache.org/licenses/LICENSE-2.0 9402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * 10402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Unless required by applicable law or agreed to in writing, software 11402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * distributed under the License is distributed on an "AS IS" BASIS, 12402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * See the License for the specific language governing permissions and 14402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * limitations under the License. 15402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent */ 16402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 17402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurentpackage android.hardware.broadcastradio@1.0; 18402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 19402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurentimport ITunerCallback; 20402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 21402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurentinterface ITuner { 22402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 2340d3a9bd8c62714ee58f9363c4456f764aa5a95dAndreas Huber /** 24402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Apply current radio band configuration (band, range, channel spacing...). 25402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Automatically cancels pending scan, step or tune. 26402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * ITunerCallback.configChange() method MUST be called once the 27402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * configuration is applied or a failure occurs or after a time out. 28402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @param config The band configuration to apply. 29402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @return result OK if configuration could be applied 30402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * NOT_INITIALIZED in case of initialization error. 31402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * INVALID_ARGUMENTS if configuration requested is invalid 32402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * 33402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent */ 34402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent setConfiguration(BandConfig config) generates(Result result); 35402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 3640d3a9bd8c62714ee58f9363c4456f764aa5a95dAndreas Huber /** 37402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Retrieve current radio band configuration. 38402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @return result OK if valid configuration is returned, 39402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * NOT_INITIALIZED in case of initialization error. 40402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @param config Current band configuration 41402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent */ 42402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent getConfiguration() generates(Result result, BandConfig config); 43402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 4440d3a9bd8c62714ee58f9363c4456f764aa5a95dAndreas Huber /** 45402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Start scanning up to next valid station. 46402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Shall be called only when a valid configuration has been applied. 47402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Automatically cancels pending scan, step or tune. 48402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * ITunerCallback.tuneComplete() MUST be called once locked on a station 49402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * or after a time out or full band scan if no station found. 50402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * The status should indicate if a valid station is tuned or not. 51402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @param direction UP or DOWN. 52402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @param skipSubChannel valid for HD radio or digital radios only: 53402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * ignore sub channels (e.g SPS for HD radio). 54402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @return result OK if scan successfully started 55402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * INVALID_STATE if called out of sequence 56402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * NOT_INITIALIZED if another error occurs 57402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent */ 58402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent scan(Direction direction, bool skipSubChannel) generates(Result result); 59402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 6040d3a9bd8c62714ee58f9363c4456f764aa5a95dAndreas Huber /** 61402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Move one channel spacing up or down. 62402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Must be called when a valid configuration has been applied. 63402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Automatically cancels pending scan, step or tune. 64402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * ITunerCallback.tuneComplete() MUST be called once locked on a station 65402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * or after a time out or full band scan if no station found. 66402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * The status should indicate if a valid station is tuned or not. 67402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @param direction UP or DOWN. 68402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @param skipSubChannel valid for HD radio or digital radios only: 69402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * ignore sub channels (e.g SPS for HD radio). 70402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @return result OK if scan successfully started 71402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * INVALID_STATE if called out of sequence 72402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * NOT_INITIALIZED if another error occurs 73402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent */ 74402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent step(Direction direction, bool skipSubChannel) generates(Result result); 75402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 7640d3a9bd8c62714ee58f9363c4456f764aa5a95dAndreas Huber /** 77402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Tune to specified channel. 78402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Must be called when a valid configuration has been applied. 79402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Automatically cancels pending scan, step or tune. 80402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * ITunerCallback.tuneComplete() MUST be called once locked on a station 81402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * or after a time out or full band scan if no station found. 82402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * The status should indicate if a valid station is tuned or not. 83402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @param channel Channel to tune to. A frequency in kHz for AM/FM/HD Radio 84402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * bands. 85402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @param subChannel Valid for HD radio or digital radios only 86402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * (e.g SPS number for HD radio).. 87402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @return result OK if scan successfully started 88402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * INVALID_ARGUMENTS if invalid arguments are passed 89402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * INVALID_STATE if called out of sequence 90402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * NOT_INITIALIZED if another error occurs 91402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent */ 92402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent tune(uint32_t channel, uint32_t subChannel) generates(Result result); 93402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 9440d3a9bd8c62714ee58f9363c4456f764aa5a95dAndreas Huber /** 95402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Cancel a scan, step or tune operation. 96402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Shall be called only while a scan, step or tune operation is pending. 97402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * ITunerCallback.tuneComplete() MUST NOT be sent by the HAL. 98402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @return result OK if scan successfully started 99402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * INVALID_STATE if called out of sequence 100402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * NOT_INITIALIZED if another error occurs 101402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent */ 102402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent cancel() generates(Result result); 103402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent 10440d3a9bd8c62714ee58f9363c4456f764aa5a95dAndreas Huber /** 105402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * Retrieve current station information. 106402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @return result OK if scan successfully started 107402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * NOT_INITIALIZED if another error occurs 108402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent * @return info Current program information. 109402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent */ 1105cc9d866d2d7aeb05f05dcaa1296e28a7caeed19Tomasz Wasilczyk getProgramInformation() generates(Result result, ProgramInfo info); 111402a829db2ee64b74f9d515bbdf95a41bda73962Eric Laurent}; 112