/* Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.broadcastradio@2.0; interface ITunerCallback { /** * Method called by the HAL when a tuning operation fails asynchronously * following ITunerSession::tune(), ITunerSession::scan() or * ITunerSession::step(). * * This callback is only called when the step(), scan() or tune() command * returned OK at first. * * @param result TIMEOUT in case of time out. * @param selector A ProgramSelector structure passed from tune() call; * empty for step() and scan(). */ oneway onTuneFailed(Result result, ProgramSelector selector); /** * Method called by the HAL when current program information (including * metadata) is updated. * * This is also called when the radio tuned to the static (not a valid * station), see the TUNED flag of ProgramInfoFlags. * * @param info Current program information. */ oneway onCurrentProgramInfoChanged(ProgramInfo info); /** * A delta update of the program list, called whenever there's a change in * the list. * * If there are frequent changes, HAL implementation must throttle the rate * of the updates. * * There is a hard limit on binder transaction buffer, and the list must * not exceed it. For large lists, HAL implementation must split them to * multiple chunks, no larger than 500kiB each. * * @param chunk A chunk of the program list update. */ oneway onProgramListUpdated(ProgramListChunk chunk); /** * Method called by the HAL when the antenna gets connected or disconnected. * * For a new tuner session, client must assume the antenna is connected. * If it's not, then antennaStateChange must be called within * Constants::ANTENNA_DISCONNECTED_TIMEOUT_MS to indicate that. * * @param connected True if the antenna is now connected, false otherwise. */ oneway onAntennaStateChange(bool connected); /** * Generic callback for passing updates to vendor-specific parameter values. * The framework does not interpret the parameters, they are passed * in an opaque manner between a vendor application and HAL. * * It's up to the HAL implementation if and how to implement this callback, * as long as it obeys the prefix rule. In particular, only selected keys * may be notified this way. However, setParameters must not trigger * this callback, while an internal event can change parameters * asynchronously. * * @param parameters Vendor-specific key-value pairs, * opaque to Android framework. */ oneway onParametersUpdated(vec<VendorKeyValue> parameters); };