16e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk/* Copyright (C) 2017 The Android Open Source Project 26e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 36e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * Licensed under the Apache License, Version 2.0 (the "License"); 46e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * you may not use this file except in compliance with the License. 56e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * You may obtain a copy of the License at 66e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 76e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * http://www.apache.org/licenses/LICENSE-2.0 86e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 96e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * Unless required by applicable law or agreed to in writing, software 106e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * distributed under the License is distributed on an "AS IS" BASIS, 116e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 126e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * See the License for the specific language governing permissions and 136e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * limitations under the License. 146e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk */ 156e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk 166e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczykpackage android.hardware.broadcastradio@2.0; 176e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk 186e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczykinterface ITunerCallback { 196e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk /** 20674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk * Method called by the HAL when a tuning operation fails asynchronously 21b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk * following ITunerSession::tune(), ITunerSession::scan() or 22b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk * ITunerSession::step(). 236e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 24674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk * This callback is only called when the step(), scan() or tune() command 25674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk * returned OK at first. 26674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk * 27674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk * @param result TIMEOUT in case of time out. 28674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk * @param selector A ProgramSelector structure passed from tune() call; 296e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * empty for step() and scan(). 306e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk */ 316e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk oneway onTuneFailed(Result result, ProgramSelector selector); 326e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk 336e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk /** 346e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * Method called by the HAL when current program information (including 356e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * metadata) is updated. 366e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 376e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * This is also called when the radio tuned to the static (not a valid 386e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * station), see the TUNED flag of ProgramInfoFlags. 396e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 406e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * @param info Current program information. 416e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk */ 426e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk oneway onCurrentProgramInfoChanged(ProgramInfo info); 436e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk 446e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk /** 45bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * A delta update of the program list, called whenever there's a change in 46bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * the list. 47bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * 48bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * If there are frequent changes, HAL implementation must throttle the rate 49bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * of the updates. 50bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * 51bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * There is a hard limit on binder transaction buffer, and the list must 52bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * not exceed it. For large lists, HAL implementation must split them to 53bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * multiple chunks, no larger than 500kiB each. 54bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * 55bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk * @param chunk A chunk of the program list update. 56bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk */ 57bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk oneway onProgramListUpdated(ProgramListChunk chunk); 58bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk 59bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk /** 606e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * Method called by the HAL when the antenna gets connected or disconnected. 616e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 626e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * For a new tuner session, client must assume the antenna is connected. 636e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * If it's not, then antennaStateChange must be called within 646e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * Constants::ANTENNA_DISCONNECTED_TIMEOUT_MS to indicate that. 656e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 666e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * @param connected True if the antenna is now connected, false otherwise. 676e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk */ 686e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk oneway onAntennaStateChange(bool connected); 696e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk 706e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk /** 716e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * Generic callback for passing updates to vendor-specific parameter values. 726e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * The framework does not interpret the parameters, they are passed 736e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * in an opaque manner between a vendor application and HAL. 746e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 756e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * It's up to the HAL implementation if and how to implement this callback, 766e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * as long as it obeys the prefix rule. In particular, only selected keys 776e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * may be notified this way. However, setParameters must not trigger 786e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * this callback, while an internal event can change parameters 796e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * asynchronously. 806e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * 816e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * @param parameters Vendor-specific key-value pairs, 826e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * opaque to Android framework. 836e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk */ 846e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk oneway onParametersUpdated(vec<VendorKeyValue> parameters); 856e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk}; 86